javascript - 一段js代码的用途
PHPz
PHPz 2017-04-11 09:40:13
0
5
517

今天看源码时无意中看到这么一段,如下:

length = start > end ? 0 : ((end - start) >>> 0);

这是lodash中一个叫做baseSlice()函数的一段,原代码是:

function baseSlice(array, start, end) {
      var index = -1,
          length = array.length;

      if (start < 0) {
        start = -start > length ? 0 : (length + start);
      }
      end = end > length ? length : end;
      if (end < 0) {
        end += length;
      }
      length = start > end ? 0 : ((end - start) >>> 0);
      start >>>= 0;

      var result = Array(length);
      while (++index < length) {
        result[index] = array[index + start];
      }
      return result;
    }

那么问题来了,这个>>>0有什么用途吗?这和普通的end-start有什么区别?

我只知道一些基本的位运算符的应用,比如1<<1,相当与1*2,这个我第一次见。

去网上search了一圈,没找到很明确的答案。

求大神给科普一下,涨涨知识,谢谢。

PHPz
PHPz

学习是最好的投资!

全員に返信(5)
小葫芦

移位操作只能作用于整数,这句话的意思是将(end-start)转换为正整数

いいねを押す +0
迷茫

应该是转化成数字类型

いいねを押す +0
伊谢尔伦

数字取整型 大概这个意思

いいねを押す +0
PHPzhong

((end - start) >>> 0) 跟 ((end - start) | 0) 效果一样

いいねを押す +0
迷茫

这个是 >>> 无符号位移运算符,相当于把原来的符号位转为了一个数值位。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!