코드 가독성을 위해 상단 블록의 범위에있는 모든 변수를 선언하는 습관이 있습니다. 문서의 본문에 추가되지 않은 함수 범위 내부의 노드가 공간을 어지럽히고 성능을 저하시킬 것으로 의심됩니다. 그들에게 무슨 일이 일어나는가? 그리고 일반적으로 함수 범위 내에서 만들어진 변수는 어떻게됩니까? 기능이 실행 된 후에 파괴 되었습니까? 메모리 할당 해제에 대해 걱정할 필요가 있습니까? 범위의 맨 위에있는 블록에서 변수를 선언하는 것이 좋은 습관입니까, 아니면 필요할 때 또는 조건이 사실 일 때만 그 변수를 선언하는 것이 좋습니다. 이는 런타임 성능을 향상시키는 데 도움이됩니까? JavaScript에서 DOM 트리에 추가되지 않은 함수 내에서 생성 된 노드가 공간을 혼란시키지 않습니까?
함수 같이 가정한다 :function myfunc() {
var someNode = document.createElement('div');
if(someCondition) { // add the node only if some condition is true
document.body.appendChild(someNode);
}
이 같은 기능을 V.S :
function myfunc() {
if(someCondition) { // create and add the node only if some condition is true
var someNode = document.createElement('div');
document.body.appendChild(someNode);
}
}
확실히 대답은 – Zo72
입니다. 또한 변수가 * 선언 된 곳은 중요하지 않습니다. (변수 선언은 항상 (hoisted) (http://stackoverflow.com/questions/3725546/variable-hoisting) 범위의 맨 위). 중요한 것은 노드가 생성되어 변수에 할당되는 장소입니다. – bfavaretto
중첩 된 함수가 직접 참조되지 않더라도 모든 범위를 유지하는 이전 IE의 클로저 처리는 예외입니다. 요즘은 그다지 문제가 아닙니다. 그러나 +1은 * "필요없는 물건을 만드는 것을 피하는 것이 좋습니다"*. 가비지 수집이 우리가 기억에 대해서 생각할 필요가 없다는 것을 의미하지는 않습니다. –