Javascript函数返回:<<和|

时间:2014-02-04 07:20:45

标签: javascript

当我看到这个功能

时,我正在查看google“Bookmark bubble library”源代码
/**
* Creates a version number from 4 integer pieces between 0 and 127 (inclusive).
* @param {*=} opt_a The major version.
* @param {*=} opt_b The minor version.
* @param {*=} opt_c The revision number.
* @param {*=} opt_d The build number.
* @return {number} A representation of the version.
* @private
*/
google.bookmarkbubble.Bubble.prototype.getVersion_ = function(opt_a, opt_b,opt_c, opt_d) {
// We want to allow implicit conversion of any type to number while avoiding
// compiler warnings about the type.
return /** @type {number} */ (opt_a) << 21 |
  /** @type {number} */ (opt_b) << 14 |
  /** @type {number} */ (opt_c) << 7 |
  /** @type {number} */ (opt_d);
};

我不明白双重符号'&lt;&lt;&lt;和单个'|'

如果有人理解,请他增加我的javascript知识并告诉我这个“返回”是如何工作的?

由于

1 个答案:

答案 0 :(得分:0)

这是一些简单的JavaScript,可以看到正在发生的事情(使用.toString(2)返回数字的二进制表示形式):

console.log((8).toString(2));
> 1000
console.log((8>>1).toString(2));
> 0100 (shift right one space)
console.log((8<<1).toString(2));
> 10000 (shift left one space)
console.log((8|9|5).toString(2));
> 1101 (combines the 3 numbers like this:

  1000
  1001
  0101
  ====
  1101 if any digit is 1 then return a 1 in that digit)