变量作用域问题

var name = 'World!';

(function () {

    if (typeof name === 'undefined') {

        var name = 'Jack';

        console.log('Goodbye ' + name);

    } else {

        console.log('Hello ' + name);

    }

})();

请问name是全局变量啊 为什么在立即执行函数中为undefined

临摹微笑
浏览 520回答 1
1回答

至尊宝的传说

因为你自执行函数内也有一个 name变量,自执行函数内的变量name是用var进行声明的 会提升到自执行函数的作用域顶端即你的代码可以粗略的看为这样执行的(function () {//最新执行var name//然后执行ifif (typeof name === 'undefined') {    //然后在这里给name赋值    name = 'Jack';    console.log('Goodbye ' + name);} else {    console.log('Hello ' + name);}})()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript