在这段代码中,我希望它打印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()}`)Run Code Online (Sandbox Code Playgroud)
由于 Javascript变量提升,代码:
function getLanguage(){
if(!lang2){
var lang2 = lang1
}
return lang2
}
Run Code Online (Sandbox Code Playgroud)
将被渲染/重写(如果你愿意):
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |