1. ホーム
  2. javascript

[解決済み] JavaScriptの「ダブルチルド」(~~)演算子とは何ですか?[重複しています]。

2022-03-15 23:32:51

質問

私はいくつかのコードでこれを見ますが、それが何をするのか全くわかりません。

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;
};

は何ですか? ~~ 演算子は何をするのですか?

どのように解決するのですか?

その ~~ はダブルNOTのビット演算子です。

として使用されます。 のより高速な代替品です。 Math.floor() について ポジティブ の数値が表示されます。と同じ結果を返すわけではありません。 Math.floor() は負の数に対して、小数の後の部分を切り落とすだけだからです(この例については他の解答を参照してください)。