이 기사에서는 var와 var의 차이점이 JavaScript의 차이점에 대해 설명합니다. JS의 변수 선언의 범위는 함수를 기반으로하므로 전 세계 변수 오염을 피하는 방법을 종종 알 수 있습니다.
(기능(){ // ... })();함수 내에서는 VAR과 VAR이없는 변수가 다릅니다. 로컬 변수를 선언하는 VAR이 있으며 VARS가없고 전역 변수가 표시되므로 인터페이스를 외부에 노출시킬 수 있습니다.
글로벌 범위에서 변수를 선언 할 때 var와 var는 동일하게 보입니다. 선언 된 글로벌 변수는 Windows의 속성이라는 것을 알고 있습니다. 그것들이 동일하든, 우리는 ECMASCRPIT5에서 제공하는 속성 쿼리 방법을 통해 차이를 발견합니다.
var ffff = 2; Window.fffa = 3; ffb = 4; this.ffc = 4; var fftx = Object.GetOwnPropertyDescriptor (Window, 'ffff'); // 구성 가능 : false, enumerable : true, value : 2, writable : true var ffatx = object.getownPropertyDescriptor (Window, 'fffa'); // configurable : true, enumerable : true, value : 2, writable : true var ffbtx = object.getownPropertyDescriptor (Window, 'fffa'); // configurable : true, enumerable : true, value : 2, writable : true var ffbtx = object.getownPropertyDescriptor (Window, 'ffb'); // configurable : true, enumerable : true, value : 2, writable : true var ffctx = object.getownPropertyDescriptor (Window, 'ffc'); // 구성 가능 : true, enumerable : true, value : 2, writable : true
위의 내용을 통해 우리는 여전히 차이가 있음을 발견했습니다. Delete를 사용하여 Configuration False의 속성을 삭제할 수 없는지 확인했습니다. 즉, 변수 var를 통해 선언 된 글로벌 객체의 속성은 삭제할 수 없습니다. 또한 함수 선언에 의해 생성 된 글로벌 객체의 속성을 삭제할 수 없음을 알 수 있습니다.
FFFF 삭제; // 삭제 삭제 fffa; // 삭제 ffb 삭제; // ffc 삭제 삭제; // 삭제할 수 있습니다
결론은 VAR을 추가하고 VAR없이 글로벌 변수를 선언하는 것 사이에 차이가 있다는 것입니다.
VAR 문을 사용하여 진술을 반복적으로 선언하는 것은 합법적이고 무해합니다. 선언이 반복되고 과제가 제공되면 일반 할당 문과 다르지 않습니다. 선언되지 않은 변수를 읽으려면 JS가 오류를보고합니다.
JavaScript 범위 내에서 선언 된 변수 또는 내부 함수는 기능 본문에서 볼 수 있습니다. 즉, 함수는 정의되기 전에 이미 사용할 수 있습니다. 함수를 정의하는 두 가지 방법이 있습니다. 하나는 함수 정의 표현식이고 다른 하나는 함수 선언문입니다.
// 함수 정의 표현식 var fns = function () {// ...}; // 함수 선언 명령문 함수 fns () {// ...}함수 선언문은 외부 스크립트 또는 외부 함수 범위의 상단으로 "고급"되었으므로 이러한 방식으로 선언 된 함수는 다시 이전에 나타나는 코드에 의해 호출 될 수 있습니다. 함수 정의 표현식에서 변수의 선언이 발전되지만 변수의 할당은 발전되지 않으므로 기능 정의 전에 표현식에 정의 된 함수를 호출 할 수 없습니다.
(function () {testa (); // testa testb (); // 오류를보고합니다. 오류를보고합니다. 오류를보고합니다 : 정의되지 않은 것은 함수 console.log (testc)가 아닙니다. // 정의되지 않은 경우, 위에서 이동하면 function testa () {console.log ( "testa");} var test () {testb ") {testb") {console.log ( "testa"); "testc";) ();물론 변수와 함수를 선언 할 때 기본 사양을 준수해야하며 변수 및 함수 선언은 미리 사전에 있어야합니다.