为什么将DeepGet函数中path.length的空检查放在它的末尾?

时间:2019-01-17 20:49:19

标签: javascript underscore.js

underscore.js中的

deepGet函数实现如下:

var deepGet = function(obj, path) {
    var length = path.length;
    for (var i = 0; i < length; i++) {
      if (obj == null) return void 0;
      obj = obj[path[i]];
    }
    return length ? obj : void 0;
  };

为什么它不是这样实现的?

var deepGet = function(obj, path) {
    var length = path.length;
    if (!length)
      return void 0;
    for (var i = 0; i < length; i++) {
      if (obj == null) return void 0;
      obj = obj[path[i]];
    }
    return obj;
  };

如果'length'为null或零,则在第一个中运行2个检查(for ,? :),但在第二个中仅运行1个检查(if(!length))

我正在学习JavaScript,想知道为什么吗?

0 个答案:

没有答案