ECMAScript仕様によると、the unary logical NOT operator(!
)とthe Boolean()
functionはthe internal function ToBoolean()
を使用し、NOT演算子も結果を逆転させるためにいくつかのチェックを行います。だから、なぜ二重論理NOT操作much fasterBoolean()
機能を実行するよりもですか?なぜブール値()がJavascriptで遅いのですか?
私は速かったどのテストするために次のコードを使用:
function logicalNotOperator() {
var start = performance.now();
for (var i = 0; i < 9999999; i++) !!Math.random();
return 0.001 * (performance.now() - start);
}
function booleanFunc() {
var start = performance.now();
for (var i = 0; i < 9999999; i++) Boolean(Math.random());
return 0.001 * (performance.now() - start);
}
注:私はnew Boolean()
コンストラクタを参照するが、それはboolean型に与えられています、引数を強制変換Boolean()
機能ではないのです。
*「はるかに高速」* - 何らかの証拠? – dfsq
ブール()または新しいブール()? – StarPinkER
'Boolean()'は呼び出しごとに新しい実行コンテキストを作成するという鐘や笛を通らなければなりません。私は*これは***ロット***の時間が費やされている場所だと推測します。 – Matt