최신 웹 개발 튜토리얼
 

JavaScript Hoisting


Hoisting 정상에 선언을 이동하는 자바 스크립트의 기본 동작입니다.


자바 스크립트 선언은 게양된다

이 사용 후 JavaScript에서 변수를 선언 할 수있다.

다른 말로; 이 선언되기 전에 변수가 사용될 수있다.

실시 예 1 실시 예 2와 동일한 결과를 제공한다 :

예 1

x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element

var x; // Declare x
»그것을 자신을 시도

예 2

var x; // Declare x
x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element
»그것을 자신을 시도

이것을 이해하려면 용어를 이해해야한다 "hoisting" .

Hoisting (현재 스크립트의 상단 또는 현재 함수) 현재 범위의 상단에 모든 선언을 이동하는 자바 스크립트의 기본 동작입니다.


자바 스크립트의 초기화가 게양되지 않음

자바 스크립트는 선언하지 초기화를 리프트.

실시 예 1 실시 예 2와 동일한 결과를 제공하지 않는다 :

예 1

var x = 5; // Initialize x
var y = 7; // Initialize y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y
»그것을 자신을 시도

예 2

var x = 5; // Initialize x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

var y = 7; // Initialize y
»그것을 자신을 시도

Y는 마지막 예에서 정의되지 않은 것을 그것은 의미가 있습니까?

단지 선언 (VAR의 Y)이 아닌 초기화 (= 7) 위로 끌어 올리게되기 때문이다.

때문에 hoisting 가 사용되기 전에, 예를 선언되었지만 초기화가 게양되지 않기 때문에, Y의 값은 정의되지 않는다.

예 2는 쓰기와 동일합니다 :

var x = 5; // Initialize x
var y;     // Declare y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

y = 7;    // Assign 7 to y
»그것을 자신을 시도

상단에 변수를 선언합니다!

Hoisting (많은 개발자에) 자바 스크립트의 알 수없는 또는 간과 동작입니다.

개발자가 이해하지 않는 경우 hoisting , 프로그램 버그 (오류)를 포함 할 수있다.

버그를 방지하기 위해, 항상 모든 범위의 처음에 모든 변수를 선언한다.

자바 스크립트 코드를 해석하는 방법이 있기 때문에, 항상 좋은 규칙이다.

엄격 모드에서 자바 스크립트는이 선언되지 않은 경우 변수가 사용되는 것을 허용하지 않습니다.
연구는 "use strict" 다음 장에서.