var name = 'World!';
(function () {
if (typeof name === 'undefined') {
var name = 'Jack'
console.log('Goodbye ' + name)
} else {
console.log('Hello ' + name)
}
})()
var name = 'World!';
(function () {
if (typeof name === 'undefined') {
var name = 'Jack'
console.log('Goodbye ' + name)
} else {
console.log('Hello ' + name)
}
})()
楼上说的都对,变量提升
你的代码实际上就是下面这样:
var name = 'World!';
(function () {
//****************************
var name;
//****************************
if (typeof name === 'undefined') {
name = 'Jack'
console.log('Goodbye ' + name)
} else {
console.log('Hello ' + name)
}
})()
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答927 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
输出Goodbye Jack
个人理解:
name
得到变量提升,在typeof name === 'undefined'
前定义但尚未赋值typeof name === 'undefined'
为true
,因此进入if
内并对立即执行函数里的name
进行赋值