[英]Does Javascript hoisting only consider the first var in a scope?
在下面的 JavaScript 代码中 saySomething() 写“你好!” 但不是“你好!”。 这是否表明提升仅适用于范围内的第一个 var?
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声明发生在代码执行之前。 变量赋值发生在代码执行期间。 提升时,所有变量都有undefined
值。
证明在这里: http : //jsbin.com/xezamexama/edit?js,output
将类型检查添加到比较中,它将打印undefined
而不是"Hello you!"
正如你所料。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.