JavaScript의 함수 정의는 먼저 전체 기능 본문 명령문을 스캔하고 모든 선언 된 모든 변수를 함수의 맨 위에 "업그레이드"합니다.
'Strict'; funture foo () {var x = 'hello,' + y; 경고 (x); var y = 'bob';} foo ();엄격한 모드이지만, 진술 var x = 'hello,' + y; 변수 y가 나중에 선언되므로 오류를보고하지 않습니다. 그러나 경고는 hello, undefined, 변수 y의 값이 정의되지 않았 음을 나타냅니다. 이는 JavaScript 엔진이 변수 Y의 선언을 자동으로 향상 시키지만 변수 y의 할당을 증가시키지 않기 때문입니다.
위의 foo () 함수의 경우 JavaScript 엔진에서 보이는 코드는 다음과 같습니다.
함수 foo () {var y; // 변수 상승 선언 y var x = 'hello,' + y; 경고 (x); y = 'bob';}JavaScript 의이 이상한 "특성"으로 인해 함수 내부의 변수를 정의 할 때 규칙을 엄격히 준수하여 "함수 내에서 모든 변수를 먼저 선언"하십시오. 가장 일반적인 방법은 VAR을 사용하여 기능에 내부적으로 사용되는 모든 변수를 선언하는 것입니다.
함수 foo () {var x = 1, // x는 1 y = x + 1으로 초기화됩니다. // y는 2 z, i로 초기화됩니다. // z와 i는 정의되지 않은 // 다른 문장 : for (i = 0; i <100; i ++) {...}}JS 변수에 대한 심층적 인 이해를 향상시키는 것에 대한 위의 기사는 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.