簡體   English   中英

為什么我的find方法返回undefined?

[英]Why would my find method return undefined?

我正在重新創建一些Underscore.js方法來研究JavaScript和編程。

下面是我嘗試重新創建_.find()_.find()方法。

var find = function(list, predicate) { // Functional style
    _.each(list, function(elem){
        if (predicate(elem)) {
            return elem;
        }
    });
};

var find = function(list, predicate) { // Explicit style
    if (Array.isArray(list)) {
        for (var i = 0; i < list.length; i++) {
            if (predicate(list[i])) {
                return list[i];
            }
        }
    } else {
        for (var key in list) {
            if (predicate(list[key])) {
                return list[key];
            }
        }
    }
};

我的第二個find方法,它是利用for循環和for in循環的作品。 然而,我的第一個find方法將返回undefined 我相信兩者都應該做同樣的工作。 但是,他們沒有。 有人請指出發生了什么事嗎?

你的return只是從內部(嵌套)函數返回,你的find函數確實沒有返回任何東西,因此undefined

試試這個:

var find = function(list, predicate) { // Functional style
    var ret;

    _.each(list, function(elem){
        if (!ret && predicate(elem)) {
            return ret = elem;
        }
    });

    return ret;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM