变量进入作用域方式
1.语言内置:所有的作用域都有 this 和 arguments
2.形式参数:函数的形式参数会作为函数作用域的一部分
3.函数声明: function a(){}
4.变量声明:var a;
变量提升
函数及变量的声明都将被提升到函数的最顶部
函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。
function test1() {
a = 5;
console.log(a);
console.log(window.a);
var a = 10;
console.log(a);
}
test1();
log依次为5,undefined,10;
实际执行顺序
function test1() {
var a;
a = 5;
console.log(a);
console.log(window.a);
var a = 10;
console.log(a);
}
因为a = 5,在test1内执行,所以window.a为undefined
如果直接在window下执行
a = 5;
console.log(a);
console.log(window.a);
var a = 10;
console.log(a);
结果,5,5,10;
网友评论