gpt4 book ai didi

javascript - 为什么 _.some 在没有迭代器函数的情况下运行?

转载 作者:行者123 更新时间:2023-11-30 12:59:23 27 4
gpt4 key购买 nike

如果您使用诸如 _.some() 之类的循环惯用语,但不传递迭代器函数,则说明出了问题。然而,underscore 将用恒等函数代替它并继续运行。

这是为什么:来自underscore

  var any = _.some = _.any = function(obj, iterator, context) {
iterator || (iterator = _.identity); // this line?
var result = false;
if (obj == null) return result;
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
each(obj, function(value, index, list) {
if (result || (result = iterator.call(context, value, index, list))) return breaker;
});
return !!result;
};

案例用法:

_.some([0,1,2,3], null);

最佳答案

but don't pass in an iterator function something has gone wrong.

完全没有。 iterator 是一个可选参数,默认情况下,_.some() 将测试集合元素本身的真实性。这是 demonstrated in the docs :

_.some([null, 0, 'yes', false]);
=> true

iterator 只允许您指定自己的条件:

_.some([ 1, 2, 3, 4, 5 ], function (x) { return x > 6; })
=> false

包括测试元素成员的真实性:

_.some([ { value: 0 }, { value: 1 } ], function (x) { return x.value; });
=> true

关于javascript - 为什么 _.some 在没有迭代器函数的情况下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com