为了账号安全,请及时绑定邮箱和手机立即绑定

变量作用域问题

变量作用域问题

临摹微笑 2018-11-14 10:14:19
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);

}

})()


查看完整回答
反对 回复 2018-12-15
  • 1 回答
  • 0 关注
  • 519 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号