为什么我的函数作用域变量没有像我期望的那样设置?

在这段代码中,我希望它打印I love Java. 但是var是函数作用域。出于这个原因,它被提升到顶部并看到它被定义。所以我希望答案是JavaScript但机智输出Java,为什么?

var lang1 = 'Java'
var lang2 = 'JavaScript'

function getLanguage(){
    if(!lang2){
        var lang2 = lang1
    }
    return lang2
}

console.log(`I love ${getLanguage()}`)

回答

由于 Javascript变量提升,代码:

function getLanguage(){
    if(!lang2){
        var lang2 = lang1
    }
    return lang2
}

将被渲染/重写(如果你愿意):

function getLanguage(){
    var lang2;    // undefined local var
    if(!lang2){   // this expression will evaluate to true because !undefined = true
              
        lang2 = lang1   // set the local var to the global lang1
    }
    return lang2        // return the local var
}


以上是为什么我的函数作用域变量没有像我期望的那样设置?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>