자바스크립트 변수 호이스팅



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 엄격 모드에서는 선언되지 않은 변수의 사용을 허용하지 않습니다.
NoteJavaScript 严格模式(strict mode)不允许使用未声明的变量。
在下一个章节中我们将会学习到 "严格模式(strict mode)"
다음 장에서는

"엄격 모드"
에 대해 알아 보겠습니다.

<🎜><🎜>