似乎return语句不会破坏循环并返回函数。以下代码保持返回false ....
var __in__ = function(elem, array){
// $.each(array, function(index, item) {
array.forEach(function(index, item) {
if (item == elem)
return true;
});
return false;
};
console.log(__in__(3,[1,2,3]));
答案 0 :(得分:11)
这是因为它$.each
正在执行函数回调。 $.each
不是for
循环。以下是您的目标:
var __in__ = function(elem, array){
var result = false;
$.each(array, function(index, item) {
if (item == elem) {
result = true;
return false;
}
});
return result;
};
答案 1 :(得分:4)
您的内部return语句仅从内部(嵌套)函数返回,外部return语句始终在运行(即使在匹配时)。
答案 2 :(得分:3)
试试这个:
var __in__ = function(elem, array){
var found = false;
$.each(array, function(index, item) {
if (item == elem) {
found = true;
return false; // break out of $.each call
}
});
return found;
};