很多人都说each()
内的循环功能是糟糕做法。
它会导致可怕的性能......
就像版本一样......
版本一:
$(".next").each(function() {
var el = $(this),
setNo = 0,
onNo = function() {
setNo = 1;
};
onNo(); // setNo will become 1
)};
所以,我必须将功能移到 each()
之外。然后我很困惑在each()
版本二:
var onNo = function() {
var setNo = 1;
return setNo; // replace it
};
$(".next").each(function() {
var el = $(this),
setNo = 0;
onNo(); // it's not replacing setNo local variable. how to fix this?
)};
如何解决这个问题?
你们有更高效的设计模式,我真的很困惑于javascript设计模式。
感谢...
答案 0 :(得分:3)
你在找这样的东西吗?
function onNo ($el) {
// do some calculation with $el
var setNo = 1;
return setNo;
}
$(".next").each(function() {
var $el = $(this)
var setNo = 0
setNo = onNo($el)
)}
答案 1 :(得分:2)
我同意Juhana的评论,即性能问题不足以让人担心。但是,要回答你的问题:
你不能在另一个函数中设置局部变量。但是,您可以将变量传递给该函数。
var onNo = function(setNo) {
return setNo; // returns 0
};
$(".next").each(function() {
var el = $(this),
setNo = 0;
onNo(setNo);
)};