var name = 'World!';(function () { if (typeof name === 'undefined') { var name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();请问name是全局变量啊 为什么在立即执行函数中为undefined
1 回答

至尊宝的传说
TA贡献1789条经验 获得超10个赞
因为你自执行函数内也有一个 name变量,自执行函数内的变量name是用var进行声明的 会提升到自执行函数的作用域顶端
即你的代码可以粗略的看为这样执行的
(function () {
//最新执行
var name
//然后执行if
if (typeof name === 'undefined') {
//然后在这里给name赋值
name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})()
添加回答
举报
0/150
提交
取消