>웹 프론트엔드 >JS 튜토리얼 >js 변수 승격이란 무엇을 의미합니까? js 변수 승격 사용 소개(예)

js 변수 승격이란 무엇을 의미합니까? js 변수 승격 사용 소개(예)

不言
不言원래의
2018-09-15 16:27:105397검색

이 글의 내용은 js 변수 승격이 무엇을 의미하는지에 관한 것입니다. js 변수 프로모션 사용에 대한 소개(예제)에는 특정 참고 가치가 있습니다. 도움이 필요한 친구가 참고할 수 있기를 바랍니다.

Introduction

가변 호이스팅 호이스팅은 JavaScript 실행 컨텍스트가 작동하는 방식에 대한 사람들의 이해이며 공식적인 것은 아닙니다.

문자 그대로 이해하면 변수 승격은 변수와 함수의 선언이 물리 계층의 범위 앞으로 이동된다는 의미입니다. 하지만 이러한 이해는 정확하지 않으며 효과는 동일하지만 실제 구현은 컴파일 단계에서 JavaScript 변수 및 함수의 선언이 메모리에 저장된다는 것입니다

이는 사용자가 공식적으로 함수 선언 또는 변수 앞에 사용할 수 있습니다

함수 홍보

선언하기 전에 JavaScript에서 우리는 함수를 사용할 수 있습니다. 모두가 다음과 같이 경험했을 것입니다: JavaScript中,在声明一个函数前,我们就能够使用它,大家应该都体验过,像这样:

test();

function test() {
    // do something
}

在正常的使用情况下,应该需要先声明函数才能调用,但是这种方法仍然能够运行,这是因为JavaScript自动将函数声明事先存入了内存的原因,看起来就像JavaScript自动把函数声明提升到了最前面

变量的提升

对于变量,JavaScript使用类似的方法,但是要注意一点的是,对于变量的提升,JavaScript只会将变量声明提升,但是不会把初始化提升,如果在变量初始化之前使用,则会得到undefined

// undefined
console.log(a);
// ReferenceError: b is not defined
console.log(b);
var a = 10;
// undefined
console.log(num);
num = 6;
// 6
console.log(num);
num += 7;
// 13
console.log(num);
var num;
// undefined
console.log(num);
num = 1;
// 1
console.log(num);
var num = 2;
// 2
console.log(num);

这里要注意,JavaScript变量提升是针对var的,而letconst

// ReferenceError: a is not defined
console.log(a);
let a = 10;
일반적인 사용에서는 호출하기 전에 먼저 함수를 선언해야 하지만 이 메서드는 여전히 실행될 수 있습니다. JavaScript는 함수 선언을 미리 메모리에 자동으로 저장하는데 JavaScript는 자동으로 함수 선언을 앞쪽으로 승격시키는 것처럼 보입니다

Variable Promotion

For 변수의 경우 JavaScript는 비슷한 방법을 사용하지만 변수 승격의 경우 JavaScript는 변수 선언만 승격하고 초기화는 승격하지 않는다는 점에 유의하세요.

var a = 100;
function fn() {
    // undefined
    console.log(a);
    var a = 200;
    // 200
    console.log(a);
}
fn();
// 100
console.log(a);
var a;
// 100
console.log(a);
// 300
var a = 300;
console.log(a);
rrreeerrreee여기서 JavaScript

변수 승격은 var용이고 let에 대한 것이라는 점에 유의해야 합니다. const를 사용한 변수 승격 기능rrreee

더 복잡한 예

rrreee#🎜🎜 #관련 권장 사항: # 🎜🎜#

js 변수 호이스팅에 대한 자세한 설명

#🎜🎜##🎜🎜##🎜🎜#JS의 범위 및 변수 호이스팅(호이스팅) 심층적인 이해 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#

위 내용은 js 변수 승격이란 무엇을 의미합니까? js 변수 승격 사용 소개(예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.