JS作用域
js作用域分为2种,一种是全局作用域,一种是函数作用域
全局作用域
编程时定义的变量其实就是全局变量,应用的范围其实就是全局作用域,全局内都可以进行使用。定义 var a = 1; 其实挂载到了浏览器的window对象上,可以直接在浏览中访问到变量a,直接上代码吧
函数作用域
在函数中声明的变量成为局部变量,应用范围就是函数作用域,该变量只能在函数内进行使用,外部不能使用,所以也就没有挂载到浏览器的window对象上,函数内可以访问全局变量。上代码:
注意:函数作用域内访问变量不存在时,会从内到外一次寻找,直到全局变量上没有,才会报错。
作用域定义的变量、函数声明会提升到作用域的顶部
输出结果: undefined undefined 不信的话自己去运行一下
上面的代码相当于
var a;
var b;
console.log(a,b)
a = 1;
b = function(){}
说到这了就留一个问题吧:下面代码的输出是什么?打到评论区吧,再见
var a = 1,
b = 2;
function f1() {
console.log(a);
var a = 3;
function f2() {
console.log(a, b);
}
f2();
}
f1();