跳出jQuery循环vs原生JS for循环.哪个更好
Breaking out of jQuery loop vs native JS for loop. Which is better?
首先,如果标题问题与我要问的问题不完全匹配,请道歉。
我的问题是,我想有一个循环,控制应该打破这个循环,一旦条件得到满足。
现在,是更好地使用原生JS 'for循环'和使用'return',还是更好地使用jQuery.each()和使用return false,跳出循环?
如果您可以使用普通的旧JavaScript方法在集合上循环,请使用它并正常跳出。
除非有很好的理由使用jQuery.each()
,否则我尽量使它远离我的代码。这是一个非常简单的快捷方式,通过使用普通的JavaScript,我可以保留对代码实际操作的更多控制。
我想你是指break
?抛开性能不谈,使用任何你觉得更清晰的东西。
有些人会认为for...break
的简洁性(甚至for
具有适当的停止条件)会胜过创建匿名函数并在您的代码和它们的代码之间来回传递控制的库函数,但是它们都可以工作。
如果您确实关心性能方面(您可能不应该关心,可读性在这方面更重要),那么for
也会胜出——为每个元素调用函数并处理返回值以停止条件并不是"免费的"。
在实际情况下,我更喜欢使用普通的JS循环。
你对普通JS for循环有更多的控制,因为在那里你可以从整个函数返回。在jQuery .each()
循环中,您只能使用return
停止.each()
迭代。如果希望从宿主函数中调用return
,则需要编写额外的代码。如果可能的话,我更喜欢纯JS的for循环。
在JS调试器中,普通的JS for循环也更容易进入、通过和退出。要进入.each()
循环,您必须执行大量的jQuery代码,或者您必须在.each()
循环中放置一个断点并运行到该断点。
例如,要在满足循环中的某些条件时从宿主函数返回,在两个循环中可以这样工作:
普通JS
function findMatch(array, target) {
for (var i = 0, len = array.length; i < len; i++) {
if (array[i] === target) {
return(i);
}
}
return(-1);
}
使用jQuery.each () function findMatch(array, target) {
var found = -1;
jQuery.each(array, function (index, value) {
if (value === target) {
found = index;
return(false);
}
});
return(found);
}
在调试器中遍历这个函数,看看它为什么工作或不工作,在纯JS版本中要容易得多。
我通常更喜欢$.each
,因为它看起来更干净的数组(不需要i < a.length
等),更接近foreach
语法,更舒适的语言。而且,它有自己的作用域,这有助于避免闭包中的一些常见错误:
for(var i = 0; i < a.length; i++) {
a[i].onclick = function() {
// this will display the index of the clicked
// element. Or maybe not?
alert(i);
}
}
跳过控制级别(打破多个循环或在循环中间从整个函数返回)是不可能使用$.each
的,所以如果你需要,使用for
。此外,基于函数的循环的交互式调试更加痛苦。
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- 我没有'I don’我不理解for在循环中的用途
- 为什么在 Javascript 中使用空的 for 循环 - for(;;).
- 错误后如何停止循环“FOR”
- 如何使用循环 for 与 java 脚本一起检查输入中的值
- 如何正确使用ngRepeat,同时使用循环for
- 是否可以使用循环(for/while)来制作动画?
- 在循环for循环时如何进入和退出
- Javascript原型循环for in数组
- 在对象数组中循环for
- Javascript循环:for循环工作,但不能映射
- 如何创建一个循环"for"在json