Javascript 为什么';你不能验证它的功能吗?
尤其是在其Javascript 为什么';你不能验证它的功能吗?,javascript,underscore.js,Javascript,Underscore.js,尤其是在其的实现中。似乎一个简单的类型的迭代器==='function'就可以做到这一点。可能只是使用obj==null检查 // The cornerstone, an `each` implementation, aka `forEach`. // Handles objects with the built-in `forEach`, arrays, and raw objects. // Delegates to **ECMAScript 5**'s native `forE
的实现中。似乎一个简单的类型的迭代器==='function'
就可以做到这一点。可能只是使用obj==null
检查
// The cornerstone, an `each` implementation, aka `forEach`.
// Handles objects with the built-in `forEach`, arrays, and raw objects.
// Delegates to **ECMAScript 5**'s native `forEach` if available.
var each = _.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return obj;
if (nativeForEach && obj.forEach === nativeForEach) {
obj.forEach(iterator, context);
} else if (obj.length === +obj.length) {
for (var i = 0, length = obj.length; i < length; i++) {
if (iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
var keys = _.keys(obj);
for (var i = 0, length = keys.length; i < length; i++) {
if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
}
}
return obj;
};
//基石,一个'each'实现,又称'forEach'。
//使用内置的“forEach”、数组和原始对象处理对象。
//委派到**ECMAScript 5**的本机“forEach”(如果可用)。
var each=u0.each=0.forEach=函数(对象、迭代器、上下文){
如果(obj==null)返回obj;
if(nativeForEach&&obj.forEach===nativeForEach){
forEach(迭代器,上下文);
}否则如果(对象长度===+对象长度){
对于(变量i=0,长度=obj.length;i
无需验证。如果函数的输入不正确,则它是由编程错误引起的,应通过放大来处理。如果不是函数,是否键入check it以引发错误?如果不进行打字检查,它就是这样做的
相关:。可能是性能问题,但您最好询问下划线开发团队中的人员。我们只能推测脚本作者实现这些脚本的原因。尝试询问他们,而不是StackOverflow社区。因此,您宁愿让\uForEach
以静默方式失败,也不愿告诉您传递了错误的值?当迭代器
不是函数时,函数会抛出一个(可以说是不理想的)错误。我不认为这是基于意见的。该方法缺乏一致性,一种情况下返回obj,另一种情况下让语言抛出错误。我在jQuery中了解到几乎没有抛出任何错误,JS中的异常也不经常使用。遵循这一趋势也会带来更多的一致性。一致性和惯例不是意见。两者都是很好的设计选择。