【发布时间】:2015-06-09 14:20:42
【问题描述】:
有人知道一些技巧吗?我尝试使用try-catch:
"use strict";
const a = 20;
var isConst = false;
try {
var temp = a; a = a+1; a = temp;
} catch (e) {
isConst = true;
}
但不幸的是,它只能在“严格”模式下工作。如果没有“使用严格”,它会静默执行所有语句,无需修改 a。此外,我不能将此代码包装到一些方便的函数中(例如isConstant(someConst)),因为我将传递给该函数的任何参数都是一个新变量。那么有人知道如何创建isConstant() 函数吗?
【问题讨论】:
-
对于我来说
const a=2;a++;抛出一个SyntaxError(“对 const a 的无效赋值”),使用 Firefox 37.0,即使没有严格模式,我也没有启用javascript.options.strict。另一个是TypeError:“重新声明 const a”,如果我这样做const a=2;delete a;或const a=2;const a=2;。 -
有趣的问题。我认为大多数浏览器都无法确定——至少according to Mozilla's compatibility chart——但我很好奇是否有办法检测到它。
-
你用什么浏览器?因为就 Firefox 37.0 而言,尝试重新定义常量并捕获语法错误的
try-catch可能会起作用。 -
@Xufox Chrome Canary。
-
这是什么原因?