비정상적인 자바 스크립트 '패턴'을 실험하고 있으며 상위 범위에서 변수를 선언하는 것이 바람직하지 않은 경우 블럭 범위 지정 방법을 생각할 수 있습니다.함수 범위 if 문
function someFunction() {
var x, t;
for (x = 0; x < 10000; x += 1) {
if (true) {
t = x;
}
}
}
하나는 사용하여 별도의 부모 변수를 저장할 수 :
function someFunction() {
var x;
for (x = 0; x < 10000; x += 1) {
if (true) { void function() {
var t = x;
}(); }
}
}
그러나, 내 jsperf (http://jsperf.com/scoped-if)를 반복적으로 사용하는 경우이 것을, 5 월을 보여줍니다 대신 예를 들어
, 성능에 부정적인 영향을 미칩니다. 분명히이 결과는 드물게 수행하지 않는 한 앞서 말한 것이 실용적인 패턴이 아니라는 것을 나타냅니다.
는 내가 처음이 단지 1. 내 질문은
,이 패턴은 여전히 주어진 유용 할 수 포함 반면 속도 저하가 실행 컨텍스트 (+ 10000 1)의 반복 생성과 파괴 될 가능성이 있음을 이해 위의 조건 (루프 내에서 사용되지 않음) 및 컨텍스트를 만드는 데 비용이 많이 드는 이유는 무엇입니까?
내가 대신 루프의 내부에 어떤 최적화, 그 최적화하려고하지 않을는, 일반적으로 그 소요 :
더 좋은 방법은 필요한 ES6의 transpiler하다면,
let
을 사용하는 것입니다 이 계산의 100 %에 가까움 –이 '패턴'의 목적은 블록 내에서 사용하기 위해서만 변수를 사용하여 부모 범위를 오염시키지 않는 것입니다. – Vix