是否建议在.each()中放入一个函数
Is it recommended to put a function inside .each()?
我正在循环遍历DOM元素的集合。每次迭代都会多次使用helper()
函数,如下所示:
$(".myclass").each(function() {
var arg;
helper();
// do stuff
function helper() {
// do helpful stuff with arg
}
});
将helper()
函数包含在如上所述的function()
块中是不是一种糟糕的做法?我应该使用:
$(".myclass").each(function() {
var arg;
helper(arg);
// do stuff
});
function helper(arg) {
// do helpful stuff with arg
}
在第一个例子中,每个匹配的.myclass
元素在内存中是否都有自己的helper
函数实例?
编辑:如果有人在寻找答案的好解释-http://net.tutsplus.com/tutorials/javascript-ajax/stop-nesting-functions-but-not-all-of-them/
您在第一个示例中创建了helper
函数的实例,而在第二个示例中,所有迭代只使用一个实例。
因此,为了避免创建多个相同的函数,您可以在第一个示例中内联代码,也可以使用第二种方法。
是的,这将一次又一次地重新声明函数(每次循环运行时)。
你可以像第二个例子一样把函数放在更高的范围内,或者如果你想保持范围更干净,你可以围绕函数做一个闭包(尽管这在外部闭包何时执行、执行次数等方面都有影响):
$(...).each((function() {
var helper = function(arg) {
//do helpful stuff with arg
}
return function() {
var arg;
helper(arg);
//do stuff
};
}());
但请注意,这仍然有可能使helper被定义不止一次,只是不是在每次迭代中。
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟