JS笔记之第四天

arguments对象

使用arguments对象可以获取传入的每个参数的值

arguments对象可以当做数组使用,但它是一个伪数组

 

例子:计算n个数字的和

function fi(){
      var sum=0;
     for(var i=0;i<arguments.length;i++){
          sum+=arguments[i];
  }
   return sum;
}

函数的其他定义方式

命名函数:函数如果有名字,就是命名函数

匿名函数:函数如果没有名字,就是匿名函数

函数的另外一种定义方式

函数表达式:把一个函数给一个变量,此时形成了函数表达式

var  变量=匿名函数;

例子:

var  f1=function(){

};

如果是函数表达式,那么此时前面的变量中存储的就是一个函数,而这个变量就相当于是

 一个函数,就可以直接加小括号调用了

f1();

注意:函数表达式后面,赋值结束后,要加分号

函数的自调用--->没有名字;调用--->声明的同时,直接调用

函数的自调用是一次性的

(function(){ console.log(“擦汗”)})();

(function(){ console.log(“佳丽斯”)})();

函数也是一种数据类型。

函数是有数据类型的,数据类型是:function类型

函数作为参数使用;如果一个函数作为参数,那么我们说这个参数(函数)可以叫回调函数。

只要看到函数作为参数使用,那就是回调函数。

函数可以作为返回值使用。

作用域

指的是:使用范围

分为全局变量和局部变量

全局变量:声明的变量是使用var声明的,那么这个变量就是全局变量,全局变量可以在页面的任何位置使用。

除了函数以外,其他的任何位置定义的变量都是全局变量。

 全局变量如果页面不关闭,那么就不会释放,就会占空间,消耗内存。

局部变量:在函数内部定义的变量,是局部变量,外面不能使用

全局作用域:全局变量的使用范围。

局部作用域:局部变量的使用范围。

块级作用域:一堆大括号就可以看成是一块,在这块区域中定义的变量,只能在这个区域中使用,但是在js中,这个块级作用域中定义的变量,外面也能使用。说明:

JS没有块级作用域,只有函数除外

拓展:

隐式全局变量:声明的变量没有var,就叫隐式全局变量

全局变量是不能被删除的,隐式全局变量是可以被删除的。

定义变量使用var是不会被删除的,没有var是可以删除的

作用域链

使用的变量应当在当前的作用域找,找不到再去上一级找。

这一整个形成的关系,就叫作用域链。

预解析

预解析:指的是在当前作用域下,js运行之前,会把带有var和function关键字事先声明,并在内存中安排好。然后再从上到下执行js语句。

预解析只会发生在通过var定义的变量和function上。

预解析就是提前解析代码

预解析中,变量的提升,只会在当前的作用域中提升,提前到当前的作用域的最上面。

函数中的变量只会提前到函数的作用域中的最前面,不会出去

预解析会分段(多对的script标签中函数重名,预解析的时候不会冲突)

猜你喜欢

转载自www.cnblogs.com/haohaogan/p/12578798.html