JavaScript测试:作用域、变量提升、函数提升
var foo = 1;
function bar() {
alert(foo);
if (!foo) {
var foo = 10;
}
alert(foo);
}
bar();
var foo = 1; function bar() { alert(foo); if (!foo) { foo = 10; } alert(foo); } bar();
var a=1;
function b(){
alert(a);
if(!a){
a=10;
}
alert(a);
function a(){}
}
b();
alert(a);
var x = 1; console.log(x); if (true) { var x = 2; console.log(x); } console.log(x);
- 函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部。
- 请注意,变量赋值并没有被提升,只是声明被提升了。
- 但是,函数的声明有点不一样,函数体也会一同被提升。但是请注意,函数的声明有两种方式。
- var与不var是有区别的. 没有var的写法,其变量不会被提升。
Reference:
- http://blog.csdn.net/sunxing007/article/details/9034253

浙公网安备 33010602011771号