![](/img/trans.png)
[英]Why does this use of JavaScript's find() method return 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.