자바스크립트 변수 호이스팅
JavaScript에서는 함수 및 변수 선언이 함수의 맨 위로 승격됩니다.
자바스크립트에서는 변수를 사용한 후에 선언할 수 있습니다. 즉, 변수를 먼저 사용한 후 선언할 수 있습니다.
다음 두 인스턴스는 동일한 결과를 얻습니다.
Instance
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> x = 5; // 变量 x 设置为 5 elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = x; // 在元素中显示 x var x; // 声明 x </script> </body> </html>
Running Instance»
온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요
인스턴스
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x; // 声明 x x = 5; // 变量 x 设置为 5 elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = x; </script> </body> </html>
인스턴스 실행»
"인스턴스 실행" 버튼을 클릭하면 온라인 인스턴스를 볼 수 있습니다
위의 예를 이해하려면 "호이스팅(가변 호이스팅)"을 이해해야 합니다.
변수 승격: 함수 선언과 변수 선언은 항상 인터프리터에 의해 메서드 본문의 맨 위로 조용히 "승격"됩니다.
JavaScript 초기화는 승격되지 않습니다.
JavaScript는 선언된 변수만 승격되고 초기화된 변수는 승격되지 않습니다.
다음 두 인스턴스의 결과는 다릅니다.
Instance
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 5; // 初始化 x var y = 7; // 初始化 y elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = x + " " + y; // 显示 x 和 y </script> </body> </html>
인스턴스 실행»
클릭 온라인 인스턴스를 보려면 "인스턴스 실행" 버튼
인스턴스
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = 5; // 初始化 x elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = "x 为:" + x + ",y 为:" + y; // 显示 x 和 y var y = 7; // 初始化 y </script> </body> </html>
실행 인스턴스»
온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요
인스턴스 2의 y가 정의되지 않음을 출력하기 때문입니다. var y)는 승격되지만 초기화(y = 7)는 승격되지 않으므로 y 변수는 정의되지 않은 변수입니다.
예제 2 다음과 같은 코드:
var x = 5; // 初始化 x var y; // 声明 y elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = x + " " + y; // 显示 x 和 y y = 7; // 设置 y 为 7
헤더에 변수를 선언하세요.
JavaScript 변수 호이스팅은 대부분의 프로그래머에게 알려져 있지 않습니다.
프로그래머가 변수 승격을 잘 이해하지 못하면 그들이 작성한 프로그램에 문제가 발생하기 쉽습니다.
이러한 문제를 방지하기 위해 일반적으로 각 범위가 시작되기 전에 이러한 변수를 선언합니다. 이는 일반적인 JavaScript 구문 분석 단계이기도 하며 이해하기 쉽습니다.
JavaScript 엄격 모드에서는 선언되지 않은 변수의 사용을 허용하지 않습니다.
"엄격 모드" |