函数作用域:变量在声明它们的函数体及这个函数体嵌套的任意函数体都是由定义的
即函数的局部变量也声明提前,但是赋值不提前(小白理解,大佬多执教。。)
问题一:x是输出多少? 答案:10
var x = 10;
function fn () {
console.log(x);
}
function show (f) {
var x = 20;
f();
}
show(fn); //输出是10
原因是调用函数时函数还是沿着自己的作用域链去寻找的。
问题二:
var a = 1;
function t(){
console.log(a); //输出undefined而非2
var a = 2;
console.log(a); //输出2
}