赋值javascript1.7中的左侧无效

时间:2012-09-18 01:35:03

标签: javascript

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 但是没有使用这种代码:

jsversion = 1.7;

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

我尝试使用以下代码(但错误发生在“strict”

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

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

感谢。

1 个答案:

答案 0 :(得分: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代码应该在所有浏览器上运行。

您遇到的问题归因于Chapter 16

  

16个错误

     

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

     

...

     

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

     
      
  • 任何语法错误。
  •   

但上面的代码片段会解决早期错误,因为

  

eval代码中的早期错误在eval被称为

时报告