在以下JavaScript代码中,saySomething()会写“Hello there!”但不是“你好!”。这是否表明吊装仅适用于范围内的第一个变量?
var whatToSay = 'Hello World!';
function saySomething() {
if (!whatToSay) {
var whatToSay = 'Hello there!';
}
document.write(whatToSay);
var whatToSay = 'Hello you!';
}
saySomething();
的链接
答案 0 :(得分:2)
不。提升意味着var 声明在代码执行之前发生。 Var 赋值在代码执行期间发生。提升时,所有变量都有undefined
个值。
此处的证明:http://jsbin.com/xezamexama/edit?js,output
添加类型检查以进行比较,它会按预期打印undefined
而不是"Hello you!"
。