【发布时间】:2016-02-01 03:06:00
【问题描述】:
今天我遇到了一个奇怪的 JS 错误,在 try/catch 块中使用 const,我想更好地了解导致它的原因。
让我们看一个代码示例,价值超过一千字:
try {
const FOO = 'bar';
console.log('inside:', FOO);
} catch (e) {}
console.log('outside:', FOO);
这将记录:
inside: bar
outside: bar
如果我们切换到“严格模式”:
'use strict';
try {
const FOO = 'bar';
console.log('inside:', FOO);
} catch (e) {}
console.log('outside:', FOO);
现在同样的代码会产生错误:
ReferenceError: FOO is not defined
如果我们将 const 更改为 var:
'use strict';
try {
var foo = 'bar';
console.log('inside:', foo);
} catch (e) {}
console.log('outside:', foo);
然后一切正常,即使在“严格模式”下:
inside: bar
outside: bar
谁能帮我理解为什么 const 分配在“严格模式”下的 try/catch 块中不起作用?
谢谢!
【问题讨论】:
-
比较
const和let,而不是var
标签: javascript try-catch constants ecmascript-6 strict