在网络上搜集的面试题,通过运行加了注释。
例1.
var b=2;//声明全局变量
function test2(){
window.b=3;//也是全局变量,并且覆盖了前面的b
console.log(b);
}
test2();//3
alert(b);//3
c=5;//声明一个全局变量c
function test3(){
window.c=3;
console.log(c); //undefined
var c;//变量声明提升
console.log(window.c);//3
}
test3();
上述代码相当于:
c=5;//声明一个全局变量c
function test3(){
var c;
window.c=3;
console.log(c); //先访问局部变量,undefined
console.log(window.c);//访问全局变量,3
}
test3();
function bar() {
return foo;
foo = 10;
function foo() {}
}
alert(typeof bar());//"function"
上述代码相当于:
function bar() {
function foo() {}
return foo;
foo = 10;
}
alert(typeof bar());//"function"
function bar() {
return foo;
foo = 10;
function foo() {}
var foo = 11;
}
alert(typeof bar());//function
上述代码相当于:
function bar() {
var foo;
function foo() {}
return foo;
foo = 10;
foo = 11;
}
alert(typeof bar());//"function"
例5.
function bar() {
var foo=11;
return foo;
foo = 10;
function foo() {}
}
alert(typeof bar());//number
上述代码相当于:
function bar() {
var foo;
function foo() {}
foo=11;
return foo;
foo = 10;
}
alert(typeof bar());//number
例6.
console.log(a);//function a(){}
var a = 3;
function a(){}
console.log(a);//3
上述代码相当于:
var a;
function a(){}
console.log(a);
a = 3;
console.log(a);