当我看到这个功能
时,我正在查看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知识并告诉我这个“返回”是如何工作的?
由于
答案 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)