【问题标题】:_.isUndefined implementation_.isUndefined 实现
【发布时间】:2012-11-19 23:03:24
【问题描述】:

为什么 underscore.js 的 isUndefined 是这样定义的?

_.isUndefined = function(obj) { return obj === void 0; };

为什么这行不通?

typeof obj === 'undefined'

【问题讨论】:

  • typeof obj === "undefined" 有效,但字符串很难看

标签: javascript underscore.js


【解决方案1】:

好的,首先typeof obj === 'undefined' 速度较慢,您可以轻松验证。

那么问题是为什么要进行比较

obj === void 0 

obj === undefined

让我们看看:

void 0; 返回一元运算符 void 的结果,它将始终返回 undefined(即 void 1 没有区别)

undefined 指向全局变量undefined

一般情况下两者是一样的。我认为虽然void 0 是首选,因为可以使用局部变量undefined 来影响undefined :) 这很愚蠢,但它确实发生了。

【讨论】:

    【解决方案2】:

    它的编写方式可能更有效。何不剖析一下这两个定义看看?

    【讨论】:

    • 这些结果是有道理的。使用 typeof 和字符串比较,您有额外的散列步骤来比较相等性。
    • Perfs 还暗示 Firefox 在内部执行相同的操作,或者非常相似的操作。有趣。
    【解决方案3】:

    如果你写了viod,你会得到一个语法错误。您将“未定义”拼写为'undeifned',但您没有收到任何错误。所以,一个可能的原因是更容易调试! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 2012-10-19
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多