【JS错题总结】作用域链问题
作用域链
上面代码的输出是 GoodbyeJack ,因为执行到语句 typeof name === 'undefined' 的时候,函数会从内向外(作用域链)寻找该变量,从 语句 var name; 找到该变量的定义,该变量此时的值为 undefined。自执行函数解析和执行一起完成,自己有的不会再向上查找。
var name ='zhangsan';
(function f() {
var name
console.log(name) // undefined
console.log(typeof name) // 'undefined'
})()