为什么不强调验证其功能?

时间:2014-06-27 19:32:52

标签: javascript underscore.js

特别是在_.each的实施中。似乎一个简单的typeof iterator === '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;
  };

2 个答案:

答案 0 :(得分:1)

无需验证。如果函数的输入不正确,则由编程错误引起,应该通过炸毁来处理。

答案 1 :(得分:0)

如果它不是函数,你想键入检查它是否会抛出错误?如果你不打字检查就行了。

相关:Aggressive null-checking in Java