Pen*_*ica 9 javascript const try-catch strict ecmascript-6
今天我遇到了一个奇怪的JS错误,const在try/catch块里面工作,我想更好地理解导致它的原因.
让我们看一个代码示例,值得超过千言万语:
try {
const FOO = 'bar';
console.log('inside:', FOO);
} catch (e) {}
console.log('outside:', FOO);
Run Code Online (Sandbox Code Playgroud)
这将记录:
inside: bar
outside: bar
Run Code Online (Sandbox Code Playgroud)
如果我们切换到"严格模式",但:
'use strict';
try {
const FOO = 'bar';
console.log('inside:', FOO);
} catch (e) {}
console.log('outside:', FOO);
Run Code Online (Sandbox Code Playgroud)
现在相同的代码会产生错误:
ReferenceError: FOO is not defined
Run Code Online (Sandbox Code Playgroud)
如果我们改变const了var:
'use strict';
try {
var foo = 'bar';
console.log('inside:', foo);
} catch (e) {}
console.log('outside:', foo);
Run Code Online (Sandbox Code Playgroud)
然后一切正常,即使在"严格模式":
inside: bar
outside: bar
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我理解为什么const在"严格模式"下,赋值在try/catch块中不起作用?
谢谢!
| 归档时间: |
|
| 查看次数: |
3129 次 |
| 最近记录: |