ECMAScript 사양에 따르면 the unary logical NOT operator (!
) 및 the Boolean()
function은 the internal function ToBoolean()
을 사용하고 NOT 연산자는 결과를 역으로하기 위해 몇 가지 검사를 수행합니다. 그렇다면 Boolean()
함수를 실행하는 것보다 double 논리 NOT 연산 much faster은 왜 발생합니까? 자바 스크립트에서 부울()이 느린 이유는 무엇입니까?
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()
기능 .
* "훨씬 빠름"* - 몇 가지 증거가 있습니까? – dfsq
부울() 또는 새 부울()? – StarPinkER
'Boolean()'은 각 호출에 대한 새로운 실행 컨텍스트를 생성하는 종소리와 호루라기를 거쳐야합니다. 여기서'!! true'는 그렇지 않습니다; 나는 *** 시간 ***이 많이 소비 된 곳이라고 생각합니다. – Matt