>  기사  >  웹 프론트엔드  >  Javascript_Basic 지식으로 선언시 "var"를 사용하는 것과 "var"를 사용하지 않는 것의 차이점

Javascript_Basic 지식으로 선언시 "var"를 사용하는 것과 "var"를 사용하지 않는 것의 차이점

WBOY
WBOY원래의
2016-05-16 17:37:041061검색

Javascript에서 변수를 선언할 때 var 키워드를 사용하여 실행하든, 키워드 없이 실행하든 문제가 없지만, 두 방법에는 여전히 차이가 있습니다. 코드가 작동한다고 해서 그것이 좋은 코드라는 의미는 아닙니다.

변수 번호 = 1

은 현재 도메인에서 변수를 선언합니다. 메서드에서 선언하면 지역 변수이고 전역 도메인에서 선언하면 전역 변수입니다.

숫자 = 1;

실제로는 속성 할당 작업입니다. 먼저 현재 범위 체인에서 num을 확인하려고 시도합니다(메서드에 선언된 경우 현재 범위 체인은 전역 범위를 나타내고 메서드 로컬 범위 등을 나타냅니다.). 현재 범위 체인에서 num이 발견되면 num 속성이 수행됩니다. num을 찾을 수 없으면 전역 객체(즉, window 객체와 같은 현재 범위 체인의 최상위 객체)에 num 속성을 생성하고 값을 할당합니다.

주의! 전역 변수를 선언하지 않지만 전역 객체의 속성을 생성합니다.

그래도 여기서는 '변수 선언'과 '객체 속성 생성'의 차이점을 아직 이해하기 어려울 수 있습니다. 실제로 Javascript의 변수 선언, 속성 생성 및 각 Javascript의 각 속성에는 읽기 전용(ReadOnly), 열거 불가능(DontEnum), 삭제할 수 없음(DontDelete) 등과 같은 속성을 설명하는 특정 기호가 있습니다. 기다리다.

변수 선언에는 삭제 불가능한 속성이 있으므로 var num = 1과 num = 1을 비교하십시오. 전자는 삭제 불가능 속성을 갖는 변수 선언이므로 후자는 의 속성입니다. 전역변수이므로 전역변수에서 삭제할 수 있습니다.

자세한 내용은 다음 코드를 참조하세요.

코드 복사 코드는 다음과 같습니다.

// num1은 전역 변수이고 num2는 창 속성 중 하나입니다

var num1 = 1;

숫자2 = 2;

// num1 삭제는 삭제할 수 없습니다.

                                                                                            // num2 삭제;

함수 모델(){

var num1 = 1; // 지역변수

num2 = 2; // 창 속성

                                                                                                             |

                     (함수(){

var num = 1; // 지역변수

                                                                                                          ~                                       num1 = 2;

num3 = 3; // 창 속성

                                                                                                          |

                   }

PS. ECMAScript5 표준에는 "Strict Mode"가 있습니다. 엄격 모드에서 선언되지 않은 식별자에 값을 할당하면 참조 오류가 발생하므로 실수로 전역 변수 속성이 생성되는 것을 방지할 수 있습니다. 현재 일부 브라우저의 새 버전에서는 이미 이를 지원합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.