在块范围变量声明的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();
})()