繁体   English   中英

Javascript 提升是否只考虑作用域中的第一个 var?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM