Error: "throw $continue" is deprecated, use "return" instead
我们可以看到这个错误是由prototype.js中“DEPRECATED”块中的某些行代码(第5878行)引发的
我们可以删除此行以解决此错误,但是: - 为什么这个“已弃用”区块留在这里? - 为什么我的程序会运行这个已弃用的代码?看起来像以前一样,我们没有这个错误。 - 我们可以删除整个块吗?
/*------------------------------- DEPRECATED -------------------------------*/
Hash.toQueryString = Object.toQueryString;
var Toggle = { display: Element.toggle };
Element.Methods.childOf = Element.Methods.descendantOf;
var Insertion = {
Before: function(element, content) {
return Element.insert(element, {before:content});
},
Top: function(element, content) {
return Element.insert(element, {top:content});
},
Bottom: function(element, content) {
return Element.insert(element, {bottom:content});
},
After: function(element, content) {
return Element.insert(element, {after:content});
}
};
var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
....
答案 0 :(得分:1)
一些背景
throw $continue
在Enumerable#each()
循环中使用,与大多数逻辑控制循环中使用continue
的方式相同。它忽略了该迭代的其余循环,并继续循环中的下一个项目。
Enumerable#each()
需要2个参数,一个Javascript闭包和上下文,如果你调用return
来结束当前迭代的当前迭代并转到下一个项目。
不推荐使用throw $continue
错误处理来使用普通的Javascript函数控件。
我建议查看错误堆栈跟踪以查看调用throw $continue
的位置,并将其替换为return
。
如果您确实删除了已弃用的块,那么您将获得正常的Javascript错误,而不是有用的控制台消息,告诉您使用return
而不是