-
全局作用域
- 在页面打开的时候被创建,页面关闭的时候销毁
- 在页面的任意位置都可以访问到
- 全局作用域中声明的变量和函数会作为window对象的属性和方法保存
- window对象的属性和方法可以直接调用,如window.fun() 可以写为 fun()
-
函数作用域
-
调用函数时,函数的作用域被创建,函数执行完毕,函数作用域被销毁
-
每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
-
在函数作用域可以访问全局变量,在函数外不能访问函数内的变量
-
在函数作用域中访问变量\函数,会在函数作用域内寻找,找不到就继续在上一级作用域用寻找,一直找到全局作用域,如果没有就报错【作用域链】
-
声明提前【在函数作用域中也有声明提前的特性,对于变量和函数都起作用,此时函数作用域相当于一个小的全局作用域,详细声明提前请看声明提前部分】
-
an(); bn(); function an(){ var s = 'an' console.log(s); } var bn = function(){ console.log('bn') } // an可以执行 但是 bn is not a function
-
-
在函数作用域中,不使用变量关键字声明的变量,在赋值时会往上一级作用域寻找已经声明的同名变量,直到全局作用域时还没找到,则会成为window的属性
an(); // 输出结果 bn function an(){ var b = 'bn'; function bn(){ console.log(b); b = 'bn2'; // b会往上一级寻找已经声明的同名变量,并赋值,直到全局作用域时还没找到,则会成为window的属性 } bn(); console.log(b); // 输出 bn2 }
- 在函数中定义形参,等同于声明变量
-
JS作用域
最新推荐文章于 2024-07-08 16:22:29 发布