JavaScript에서 VAR은 변수를 선언하는 데 사용되지만이 구문은 엄격하게 필요하지 않습니다. 여러 번 Var를 사용하여 변수를 직접 사용할 수 있습니다.
코드 사본은 다음과 같습니다.
var x = "xx";
y = "xxx";
등. 이것에 문제가 있습니다. 예를 들어, 코드의 한 줄에서 선언 된 변수 x를 사용하고 싶습니다. 결과적으로 타이핑 또는 철자 오류로 인해이 변수는 y로 작성됩니다. 결과는 변수 y의 "암시 적"선언과 동일합니다. 실제 프로그래밍 에서이 오류는 때때로 감지하기가 어렵습니다.
현재 컨텍스트 에서이 "암시 적"선언을 할 때 JavaScript 엔진은 먼저이 변수가 현재 컨텍스트에서 선언되었는지 여부를 찾습니다. 그렇지 않은 경우 이전 수준의 컨텍스트에서 검색하십시오. 발견되지 않은 경우 마침내이 변수를 창에서 선언합니다!
예를 들어:
코드는 다음과 같습니다.
창문. y = "안녕하세요"; function func () {y = "아, 아니요 !!!"; } func (); 경고 (Window.y); //#=> 디스플레이 "아, 아니!"컨텍스트의 어떤 레이어에 변수의 "암시 적"정의가있는 경우, 해당 레이어의 변수는 창에 새 변수를 생성하지 않고 수정됩니다. (이런 종류의 버그는 상당히 짜증나고, 특히 캡슐화 된 더 복잡한 코드)
예를 들어:
코드는 다음과 같습니다.
var x = "window.x"; 함수 a () {var x = "a 's x"; var b = function () {var c = function () {// var! x = "C 's x :"; }; ALERT ( "C 실행 전에 BX :" + X); 기음(); ALERT ( "C 실행 후 BX :" + X); }; 경고 ( "도끼 :" + x); 비(); ALERT ( "B 기능 실행 후 AX는 다음과 같습니다." + X); }; ALERT ( "실행하기 전, Window.x :" + x); 에이(); 경고 ( "실행 후, Window.x :" + x);여기에는 다음과 같은 레이어가 있습니다. 창, func a, func b, func c는 항상 레벨에 중첩됩니다. 창-> a-> b-> c
창과 A가 변수 x를 정의하고 b는 정의되지 않습니다. x는 c로 선언되어 결국 변수 a의 값을 수정합니다.
JavaScript에서는 변수를 선언하고 그 전에 VAR을 추가해야합니다.