Gemäß der ECMAScript-Spezifikation verwenden sowohl the unary logical NOT operator() als auch the Boolean()
functionthe internal function ToBoolean()
, und der NOT-Operator führt ebenfalls einige Überprüfungen durch, um das Ergebnis umzukehren. Also warum ist eine doppelte logische NICHT-Operation much faster als die Boolean()
Funktion ausgeführt?Warum ist Boolean() in Javascript so langsam?
verwenden ich das folgende Stück Code zu testen, welche schneller war:
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);
}
Hinweis: Ich beziehe mich nicht auf den new Boolean()
Konstruktor, aber die Boolean()
Funktion, die das Argument zwingt es zu einer boolean gegeben hat .
* "viel schneller" * - einige Beweise? – dfsq
Boolean() oder neu Boolean()? – StarPinkER
'Boolean()' muss durch den Schnickschnack gehen, um einen neuen Ausführungskontext für jeden Aufruf zu erstellen, wobei '!! Ich würde * raten *, dass hier eine *** Menge *** der Zeit verbracht wird. – Matt