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。

谢谢。

最佳答案

尝试

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时报告

关于javascript - 作业javascript1.7中的左侧无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12469240/

10-11 23:50