在javascript中提升`let`的行为

时间:2015-11-07 16:47:32

标签: javascript babeljs hoisting

在块范围变量声明的MDN文档中,let据说不会提升。然而,在babel中,它似乎只是在这个示例中link to babel repl ...

const obj = {
  prop: 1,
  test() {
    this::log();
  }
}

let log = function() { console.log(this) };
obj.test(); // logs "{ prop: 1 }" with no reference error. 

我是否误解了有关吊装/暂时死区的事情?

修改

看起来这实际上不是错误,因为在obj.test()被调用的时候,log已被初始化,并且不再处于时间死区,因此引用将解决并且将会没有错误。此代码在chrome(46.0.2490.80)中运行良好,例如......

(function() { 
  'use strict'; 
  let obj = { 
    prop: 1, 
    test: function() { 
      log.call(this);
    } 
  }; 

  let log = function() { 
    console.log(this); 
  }; 
  obj.test(); 
})()

0 个答案:

没有答案