function prototype(){
for(var i in array){
// insert prototype2 here
}
}
function prototype2(){
continue;
}
// firefox throws error here
var finalFunction = combineFunctions(prototype, prototype2);
我正在使用函数作为原型来构建最终函数。
某些函数最终将在循环内复制,并且具有continue语句。这些原型功能没有执行,但是Firefox和其他网络浏览器会出错并停止该应用程序。
Chrome和nodeJS都可以。是什么原因呢? 我可以做些什么使Firefox忽略这些原型功能? Firefox是否将采用chrome编译算法?
答案 0 :(得分:0)
您要在prototype2函数中尝试执行的操作(包含循环继续逻辑)将无法正常工作,因为该函数对存在的循环一无所知。一个小代码示例中出现了错误-后面将进行说明以说明问题。
function continueLoop() {
continue;
}
for (let i = 0; i < 10; i++) {
if (i === 3) continueLoop();
console.log(i);
}
/*
Console will log:
0
1
2
Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement
at <anonymous>
*/
// NOTE: You might need to paste this into your console to see the logs, this code-snippet environment seems to throw a different error, but Chrome console will give the 'Uncaught syntax error' - but I'm editing this in Safari and I see a different error when I run it in this editor, in a different browser.
无论如何,我不确定您为什么要尝试这样做,但是我不知道为什么它会起作用。
答案 1 :(得分:0)
这是语言规范所说的:
如果没有在 IterationStatement 中直接或间接嵌套(但不跨越函数边界)嵌套此产品,则会出现语法错误。
(暂时)某些运行时允许在未调用的函数中使用;它可能会停止与下一个V8更新一起使用,并且就我们所知,即使在某些情况下,它也可能会被捕获。
对于某些特定的编程语言应该做什么有想法和意见是可以的,但是对这些想法采取行动的方法是上语言设计委员会,或者选择其他语言。在2018年末,这里有许多其他语言可以将成熟,强大的JavaScript转换为JavaScript。