相关疑难解决方法(0)

JavaScript中的"双波浪"(~~)运算符是什么?

我在一些代码中看到了这一点,我不知道它的作用:

var jdn = function(y, m, d) {
  var tmp = (m <= 2 ? -1 : 0);
  return ~~((1461 * (y + 4800 + tmp)) / 4) + 
         ~~((367 * (m - 2 - 12 * tmp)) / 12) - 
         ~~((3 * ((y + 4900 + tmp) / 100)) / 4) + 
         d - 2483620;
};
Run Code Online (Sandbox Code Playgroud)

什么是~~运营商吗?

javascript

518
推荐指数
4
解决办法
12万
查看次数

使用按位OR 0来设置数字

我的一位同事偶然发现了一种方法来使用按位或者:

var a = 13.6 | 0; //a == 13
Run Code Online (Sandbox Code Playgroud)

我们在谈论它并想知道一些事情.

  • 它是如何工作的?我们的理论是使用这样的运算符将数字转换为整数,从而删除小数部分
  • 它有什么优势Math.floor吗?也许它快一点?(双关语不打算)
  • 它有任何缺点吗?也许它在某些情况下不起作用?清晰度是显而易见的,因为我们必须弄清楚,而且,我正在写这个问题.

谢谢.

javascript floating-point bit-manipulation

178
推荐指数
6
解决办法
4万
查看次数