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)
}
})()
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
输出Goodbye Jack
个人理解:
name
得到变量提升,在typeof name === 'undefined'
前定义但尚未赋值typeof name === 'undefined'
为true
,因此进入if
内并对立即执行函数里的name
进行赋值