0

GoogleChrome中的 JavaScript1.7 错误

例子:

var x, y;
try {
 [x, y] = ["1", "2"];
 document.write(x+": "+y);
} catch(e){
 console.log(e);
}

捕获错误: 分配 JavaScript1.7 中的左侧无效

我实际上需要的是测试浏览器是否支持javascript1.7

我需要的是实际测试浏览器是否支持 javascript1.7 但不使用这种代码:

js版本=1.7;

这段代码超出了 w3c 的无效范围,还使用全局变量,这可能是一件非常糟糕的事情(可能导致冲突和其他问题)

我尝试使用以下代码(但在"strict"中出现错误)

var i=0;
try{
    yield i;
} catch(ee) {
    document.write(ee);
}

所以这就是我需要做的,测试浏览器是否支持javascript1.7。

谢谢。

4

1 回答 1

2

尝试

var isESNext;
try {
  eval('(function () { var x, y; [x, y] = [1, 2]; })()');
  isESNext = true;
} catch (ex) {
  isESNext = false;
}

这用于eval解析一些使用ES.next 模式分解但不是有效的 EcmaScript 5 的代码。声明和分配的其余代码isESNext是有效的 EcmaScript 3 代码,但应该在所有浏览器上运行。

您遇到的问题是由于第 16 章

16 个错误

早期错误是可以在评估程序中包含该错误的任何构造之前检测和报告的错误。实施必须在对该程序进行第一次评估之前报告该程序中的早期错误。

...

实现必须将以下类型错误的任何实例视为早期错误:

  • 任何语法错误。

但是上面的代码片段绕过了早期的错误,因为

调用eval时报告代码中的早期错误eval

于 2012-09-18T01:38:51.053 回答