ES5中,JavaScript只能通过函数来创建词法作用域(不是动态作用域)
词法作用域就是代码写完,作用域就已经构建好了,如下面的案例一
案例一
var num = 10;
function test(){
console.log(num);
}
function test1(){
var num = 100;
test();
}
test1(); // 10
案例二中该怎么解释一定要执行test()
才不会报错呢,不是应该像案例一那样在函数执行前就已经进行了变量提升了吗
案例二
console.log(a);
function test() {
a = 1;
}
test(); // 必须执行才能打印undefined 否则报错
一只斗牛犬
相关分类