ale*_*ods 7 javascript ecmascript-6
有谁知道一些技巧怎么做?我试着用try-catch
:
"use strict";
const a = 20;
var isConst = false;
try {
var temp = a; a = a+1; a = temp;
} catch (e) {
isConst = true;
}
Run Code Online (Sandbox Code Playgroud)
但遗憾的是,它仅适用于"严格"模式.没有"use strict",它会默默地执行所有语句,而不进行修改a
.此外,我无法将此代码包装到一些方便的函数中(isConstant(someConst)
例如),因为我将传递给该函数的任何参数都将是一个新变量.所以任何人都知道如何创建isConstant()
功能?
我认为不存在,但我也不认为这是一个大问题。我认为能够知道变量是否是 ,并且这存在于其他一些语言中可能很有用const
,但实际上,由于您(或团队中的某人)将定义这些变量,因此您会知道范围和变量的类型。换句话说,不,你不能,但这也不是问题。
它可能有用的唯一情况是您可以mutable
在运行时更改该属性,并且更改此属性是否具有实际的性能优势;let
、const
、 和 与编译器大致相同,唯一的区别是编译器在编译之前会var
跟踪并检查赋值。const
另一件需要注意的事情是,就像let
,const
的作用域是当前作用域,所以如果你有这样的东西:
'use strict';
const a = 12;
// another scope
{
const a = 13;
}
Run Code Online (Sandbox Code Playgroud)
这是有效的。请注意,如果您没有在新范围中明确声明,它会在更高的范围中查找const a = 13
,并且会给出Read Only
或Assignment
错误:
'use strict';
const a = 12;
{
a = 13; // will result in error
}
Run Code Online (Sandbox Code Playgroud)