在下面的 JavaScript 代码中 saySomething() 写入“Hello there!”但不是“你好!”。这是否表明提升仅适用于范围内的第一个变量?
var whatToSay = 'Hello World!';
function saySomething() {
if (!whatToSay) {
var whatToSay = 'Hello there!';
}
document.write(whatToSay);
var whatToSay = 'Hello you!';
}
saySomething();
这里是 JS Bin http://jsbin.com/fiyimefeso/1/edit?js,output 的链接
最佳答案
不。提升意味着 var 声明发生在代码执行之前。变量赋值发生在代码执行期间。提升后,所有变量都具有未定义
值。
证明在这里:http://jsbin.com/xezamexama/edit?js,output
在比较中添加类型检查,它将打印 undefined
而不是您期望的 "Hello you!"
。
关于javascript - Javascript 提升是否只考虑作用域中的第一个 var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079756/