在 ES6 中是否可以在严格模式下使用 try{}
在 const
中设置变量?
'use strict';
const path = require('path');
try {
const configPath = path.resolve(process.cwd(), config);
} catch(error) {
//.....
}
console.log(configPath);
这无法进行 lint,因为 configPath
定义超出范围。这似乎唯一可行的方法是:
'use strict';
const path = require('path');
let configPath;
try {
configPath = path.resolve(process.cwd(), config);
} catch(error) {
//.....
}
console.log(configPath);
基本上,对于这种情况,有没有办法使用 const
而不是 let
?
原文由 Justin 发布,翻译遵循 CC BY-SA 4.0 许可协议
将变量声明为
const
需要您立即将其指向一个值,并且不能更改此引用。这意味着您不能在一个地方定义它(在
try
之外)并在其他地方(在try
之内)赋值。另一方面,创建它并在
try
块中为其赋值都可以。但是,
const
是块作用域的,比如let
,所以如果你创建它并在你的try
中给它一个值,它只会存在于块中那个范围。因此,如果您需要在
try
之外访问此变量,则必须使用let
:或者,虽然可能更令人困惑,但您可以使用
var
在try
中创建一个变量,并在其外部使用它,因为var
作用域内的作用域是函数不是块(并被 吊起):