const在Edge 15开发人员工具中不起作用

时间:2017-05-31 13:54:52

标签: javascript ecmascript-6 microsoft-edge

我正在运行Edge / 15.15063。 'Can I Use' says const should work.

运行:

const x = 'woo'

然后:

console.log(x)

返回

'x' is undefined

截图:

enter image description here

为什么不能使用?

2 个答案:

答案 0 :(得分:2)

我怀疑Edge控制台在其封面like other implementations did下使用with语句。这可以解释vareven function declarations在全局范围内被提升,但letconst将被锁定在块范围内:

with (…) {
    const x = 'woo'
}
// next input:
with (…) {
    console.log(x) // obviously undeclared
}

尝试在单线评估中以多线模式输入 - 他们应该在那里工作。

但是你也可能想要提交一个错误,因为控制台确实希望感觉就像评估全局范围内的东西一样。

答案 1 :(得分:1)

我想我认为这一点,但这是一个猜测作为答案。虽然评论太长了。

认为当以同样的方式在顶级范围中使用constlet do not create隐式全局变量时发生的事情{{1} }。虽然使用varconst创建的顶级变量是全局变量,但它们不是全局let对象的属性。

如果MS控制台依赖于隐式window属性创建来访问在控制台中创建的变量,那么windowconst将无效。

我不确定Chrome Dev Tools的内部工作方式,但似乎为控制台中执行的代码创建了一个匿名函数包装器:

let
  

VM679:1未捕获错误      匿名:1:7

throw new Error;
  

VM759:1未捕获错误      匿名:1:21     匿名:1:33

我不确定此处是否还有其他沙盒,我不一定能找到很多关于它的文档。