javaScript笔记(四) 数组 和 函数

来源:互联网 发布:windows android忘仙 编辑:程序博客网 时间:2024/06/05 04:45

第1章 数组

1.1 数组的概述

1.1.1 为什么学习数组

之前学习的数据类型,只能存储一个值。(字符串为一个值)

我们想存储多个值的时候可以使用数组。(字符串不方便)

比如:存储班级中所有学生的姓名。([“张三”,“李四”,“王五”])

1.1.2 数组是什么

     数组是一种数据类型。(把很多数据装入一个盒子中,用的时候在取出来)

字面量为[1,2,3]。可以理解为:西瓜皮[],西瓜肉123,西瓜子(,)

1.2 数组的定义

1.2.1 字面量定义

var  arr  =  [1,2,3];

1.2.2 对象定义(数组的构造函数)

var  arr  =  new Array(参数);

参数位置一个数值时为数组长度,多个数值时为数组中的元素。

1.3 数组的操作

1.3.1 求数组的长度

数组的长度 =  数组名.length;

可以通过修改数组的长度来改变数组中元素的个数,如果改小了,数组从后面删除元素。(伪数组的长度可以修改,但是不能修改里面的元素)

1.3.2 获取数组中的元素

数组中的指定元素 = 数组名[索引值];

数组的索引代表的是数组中的元素在数组中的位置,从0开始。

如果获取数组中元素是,数组名[索引值],没有指定索引(元素没那么多),系统不报错,而是给定值为undefined;

1.4 遍历数组(获取并操作数组中的每一个元素)(!!!重点!!!)

vararr =[1,2,3];
for(vari = 0;i<arr.length;i++){
    arr[i]  //如此操作数组中的每一个元素
}

 

1.5 案例:

一、求一组数中的所有数的和和平均值

二、求一组数中的最大值和最小值,以及所在位置

三、将字符串数组用|或其他符号分割

四、将数组中值为0的去掉,不为0的存入一个新数组

五、翻转数组

六、冒泡排序,从小到大

1.6 调试(打断点)

一、过去的调试(锻炼逻辑能力)

alert(变量);     console.log(变量);

二、设置断点(项目太大,使用断点方便,清晰)

  第2章  函数基础

2.1 函数概述

   2.1.1 什么是函数

     函数就是可以重复执行的代码块。

   2.1.2 为什么要用函数

      因为一部分代码使用次数可能会很多,所以封装起来,需要的时候调用就可以了。

      案例:求和;

2.2 函数的定义

     关键字function。

     function 函数名 ()  {  程序   }

2.3 参数

    参与运算的变量。

    为什么要设置参数?为了增强函数的功能性,和程序员的交互性,和函数的可拓展行。所以我们增加了参数这个

    概念。

    2.3.1 形参

      形式上参与运算的变量,无实际值,为实参占位置,就像一个躯壳一样。(可以理解为函数的内部变量外部无

      法访问)

   2.3.2 实参

     实际参与运算的变量。形参为他占位置,真实参与运算的变量。

2.4 返回值

    函数程序运行后的结果外部需要使用的时候,我们不能直接给与,需要通过return返回。

    总结:函数内部,return后面的值就是返回值;

    作用:函数执行后剩下结果就是返回值。

    函数执行完毕,会不会留下点儿什么,取决于有没有返回值

           var  temp   =    函数名()   =  (功能)+ 该函数的返回值;

2.4.1 注意

      1. 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined

      2. 如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值

      3. 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值 也是:undefined

      4. 函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退 出,也就是说return后面的

         所有其他代码都不会再执行。

2.5 案例

      1、求圆的周长和面积

      2、求2个数中的最大值,求3个数中的最大值

      3、求一组数中的最大值和最小值

      4、翻转数组,返回一个新数组

      5、对数组排序,从小到大

      6、求阶乘

      7、求1!+2!+3!+....+n!

      8、判断一个数是否是素数

2.6 函数名、函数体和函数加载问题(重点记忆)

    1、函数名是什么

      函数名 == 函数体。

      function fn(){alert(1)};

      console.log(fn) == console.log(function fn(){alert(1)});

    2、函数加载问题

      JS加载的时候,只加载函数名,不加载函数体。所以如果想使用内部的成员变量,需要调用函数。

 

2.7  代码练习

     1、求斐波那契数列Fibonacci中的第n个数是多少?      

        1 1 2 3 5 8 13 21...

     2、输入某年某月某日,判断这一天是这一年的第几天?(闰年)

    (四年一闰,百年不闰,四百年在闰)

 

第3章  函数高级

3.1 函数定义

    3.1.1 函数声明(自定义声明)

      function f(a,b) {

            return a + b; }

      console.log(f(5,6));

   3.1.2 函数表达式

       var myFun = function (a,b){

           return a + b;

       }

      console.log(myFun(6,7));

3.2 变量和作用域(隐式全局变量和变量声明提升)

   3.2.1 变量和作用域(函数中的变量需要函数执行后才能使用)

      一、全局变量(成员变量)

      哪里都可以访问到的变量。

      (进入script立即定义的变量和没有var的变量)

    二、局部变量

      函数内部的变量,只有函数内部可以访问到。

      (函数内部用var定义的变量和形参)

   3.2.2 隐式全局变量

      隐式全局变量就是隐藏的全局变量不好被发现。

      function  fn(){

         var  a  =  b  =  c  =  1;   // b和c就是隐式全局变量

      }

   注意:

      function  fn(){

        var  a  =  b  =  c  =  1;   // b和c就是隐式全局变量(等号)

        var  a = 1;  b = 2;  c = 3;     // b和c就是隐式全局变量(分号)

        var  a = 1 ,  b = 2 ,  c = 3;    // b和c就不是隐式全局变量(逗号)

      }

   3.2.3 变量声明提升(出现原因:预解析)

      函数中,定义变量在使用变量之后

      值提升变量名,不提升变量值,容易出现undefined。计算后形成NaN。

      function fn(){

      // var aaa;

      console.log(aaa);

      var aaa = 1;

      }

   //提前看一眼这个习惯叫什么呢?  预解析!
   //变量声明提升:在预解析的时候,成员变量和函数,被提升到最高位置,方便其他程序访问。
   //变量声明提升特点:成员变量只提升变量名,不提升变量值。但是,函数是所有内容全部提升。(function直接定义的)
   //函数范围内照样会出现变量声明提升
   //什么情况容易出现变量声明提升:使用变量在定义变量之前。

3.3 匿名函数

    定义:匿名函数就是没有名字的函数。

    作用

      1.不需要定义函数名的时候。

      2.书写起来更简便。

      3.内存少加载内容。

    匿名函数的调用有三种方法:

      一、直接调用。(function(){alert(1)})()

      二、事件绑定。

      三、定时器。

3.4 递归和函数作为参数

    递归:就是函数自己调用自己。

3.5 函数是一种类型

    数据类型包括,简单类型和引用类型。

    简单数据类型有五种。String,Number,Boolean,null,undefined;

    复杂数据类型有两种。object和function。

3.6 小知识

    3.6.1 函数不调用不执行

    3.6.2 打印函数名就等于打印函数体(整个函数)

    3.6.3 加载函数的时候,只加载函数名,不加载函数体

    3.6.4 参数相当于局部变量

    3.6.5 就近原则使用变量

    3.6.6 两个评级的函数中的变量不会相互影响(可以使用同样的形参名)


0 0
原创粉丝点击