ホームページ  >  に質問  >  本文

javascript 语法 === +

代码:

  _.size = function(obj) {
    if (obj == null) return 0;
    return obj.length === +obj.length ? obj.length : _.keys(obj).length;
  };

不明白其中的=== +是啥意思?,它是在比较什么?

可能是我没表达清除,我并不是不知道操作符的功能,而是obj.length === +obj.length ?实现的是什么功能?通过使用的话,也能猜测到它是判断是否是数组或对象,但是obj.length === +obj.length为什么能够用来判断是否是数组或对象呢?

PHPzPHPz2750日前318

全員に返信(6)返信します

  • 黄舟

    黄舟2017-04-10 14:42:02

    http://segmentfault.com/q/1010000000305997


    obj.length === +obj.length
    这个并不能完全判断obj是否是数组 它能判断的只是 obj.length返回值是否是数值

    _.size 在绝大多数情况下是够用了
    考虑下如下场景

    var obj2={length:5}
    _.size(obj2)
    => 5
    

    返事
    0
  • 黄舟

    黄舟2017-04-10 14:42:02

    === 是除了比较值相等外,类型还得相同。
    + 操作是将字符串快速转换成整形。

    这是两个操作,你不要看成一个。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-10 14:42:02

    既然你这么懒, 我帮你把Google的搜索结果粘过来:
    obj.length === +obj.length in javascript
    How to understand “if ( obj.length === +obj.length )” Javascript condition statement?

    返事
    0
  • 高洛峰

    高洛峰2017-04-10 14:42:02

    同意一楼。
    ===是恒等运算符,恒等运算符的两边表达式值和类型相等返回ture
    +是将obj.length的值变成正值。

    返事
    0
  • 迷茫

    迷茫2017-04-10 14:42:02

    你可以看下我的这个问题http://segmentfault.com/q/1010000000510887

    返事
    0
  • 黄舟

    黄舟2017-04-10 14:42:02

    obj.length === (+obj.length) 如果obj.length是一个数字,那么是成立的。其他情况不成立。

    返事
    0
  • キャンセル返事