Javascript用函数return

时间:2016-05-15 15:47:10

标签: javascript

很多人都说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设计模式。

感谢...

2 个答案:

答案 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);

)};