javascript 선언 미리 발생 한 코드 규범

4363 단어 JavaScript
호 이 스 팅 사전 성명
JavaScript 의 함수 역할 영역 은 함수 내 에서 설명 하 는 모든 변 수 를 함수 내 에서 항상 볼 수 있 습 니 다.그래서 변 수 는 성명 하기 전에 사용 할 수 있 습 니 다.
function test() {

            alert(ss);

            var ss = 123;

        }

test();

이 코드 의 실행 결 과 는 undefined 로 예상 치 못 한 오류 가 발생 하지 않 았 습 니 다.
이 유 는 javascript 함수 의 모든 변수의 성명 이 함수 의 맨 위로 앞 당 겨 졌 기 때 문 입 니 다. 사실 이 코드 는 상당 합 니 다.
function test() {

    var ss;

            alert(ss);

            ss = 123;

        }

        test();

예 를 하나 더 보다.
var ss="123";

function test()

{

    alert(ss);
   //....
var ss="321"; }

이 함수 test 의 실행 결 과 를 추측 할 수 있 습 니 다. 성명 을 이해 하면 이 결 과 는 undefined 입 니 다. 왜냐하면 실행 결 과 는 등가 이기 때 문 입 니 다.
var ss="123";

function test()

{

    var ss;

    alert(ss);

    ss="321";

}

성명 은 국부 변수 ss 의 값 이 전역 변수 ss 의 값 을 덮어 쓰기 때문에 alert 를 실행 할 때 ss 의 값 은 undefined 입 니 다.
주의: 미리 설명 하 는 것 은 미리 할당 되 지 않 습 니 다. 상기 빨간색 코드 의 위치 가 바 뀌 지 않 았 음 을 주의 하 십시오.
 
이 로 인해 발생 하 는 코드 규범:
함수 내부 에서 함수 의 변 수 를 함수 체 의 상단 에 두 는 것 이 좋 습 니 다. 이러한 좋 은 습관 을 들 이면 변수 성명 이 앞 당 겨 져 서 발생 하 는 오 류 를 피 할 수 있 습 니 다.코드 보 세 요.
function scroll() {

            var em,

                i = 0,

                arr1 = document.getElementsByTagName('span'),

                arr2 = document.getElementsByTagName('label'),

                text = [],

                    txt;

            for (; i < arr1.length; i++) {

                txt = arr1[i].innerText;

                text.push(txt);

            }

            i = 0;

            for (; i < arr2.length; i++) {
         txt = arr2[i].innerText; text.push(txt); }
return text; }

상기 코드 에서 변수의 성명 이 모두 함수 상단 에 놓 여 있 는 것 을 볼 수 있 습 니 다. 이 방법 을 추천 합 니 다.
예제 에서 for 순환 의 변수 성명 도 추출 되 었 습 니 다. 이렇게 여러 순환 은 같은 변 수 를 사용 할 수 있 습 니 다.왜 그 랬 을 까?코드 를 보십시오:
function scroll()

{

    for(var i=0;i<10;i++);

    for(var j=0;j<10;j++);

    alert(i);

    alert(j);

}

세심 한 사람 은 상술 한 alert 의 결과 가 모두 10 이라는 것 을 짐작 할 수 있 을 것 이다.이것 은 모두 JavaScript 에서 블록 급 역할 영역 이 없 기 때 문 입 니 다.
한편, i, j 변 수 는 모두 쓰레기 회수 체 제 를 통 해 회수 되 지 않 았 다. 함수 가 이전 층 의 실행 환경 으로 돌아 가 야 i, j 를 방출 할 수 있다.분명히 비교 해 보면 같은 변수 로 여러 순환 을 실현 하 는 것 이 두 변수 보다 낫다.
실제 개발 과정 에서 변수의 방출, 역할 영역 등 을 자주 주의 하고 세 심하게 고려 하면 코드 의 집행 효율 과 메모리 의 사용률 을 향상 시 키 는 데 도움 이 된다.

좋은 웹페이지 즐겨찾기