"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Let, Const 및 Var 개요: 주요 차이점 설명

Let, Const 및 Var 개요: 주요 차이점 설명

2024-08-07에 게시됨
검색:345

An Overview of Let, Const, and Var: Key Differences Explained

JavaScript에서 let, const, var의 실제 사용법을 사용하고 이해할 때가 있었지만 말로 설명하는 것이 어려웠습니다. 유사한 곤경에 처한 경우 초점을 맞춰야 할 핵심 사항은 범위, 호이스팅, 재초기화 및 재할당의 차이점입니다.

범위 지정:

  • var는 함수 범위 또는 함수 외부에서 선언된 경우 전역 범위입니다.

var(함수 및 전역 범위)를 사용한 예

function varExample() {
    if (true) {
        var x = 10; // x is function-scoped
    }
    console.log(x); // Outputs: 10
}
varExample();

if (true) {
    var y = 20; // y is globally scoped because it's outside a function
}
console.log(y); // Outputs: 20
  • let 및 const는 블록 범위입니다. 즉, 선언된 블록({}로 구분) 내에서만 액세스할 수 있습니다.

let(블록 범위)의 예

function letExample() {
    if (true) {
        let x = 10; // x is block-scoped
        console.log(x); // Outputs: 10
    }
    console.log(x); // ReferenceError: x is not defined
}
letExample();

if (true) {
    let y = 20; // y is block-scoped
    console.log(y); // Outputs: 20
}
console.log(y); // ReferenceError: y is not defined

const(블록 범위)의 예

function constExample() {
    if (true) {
        const x = 10; // x is block-scoped
        console.log(x); // Outputs: 10
    }
    console.log(x); // ReferenceError: x is not defined
}
constExample();

if (true) {
    const y = 20; // y is block-scoped
    console.log(y); // Outputs: 20
}
console.log(y); // ReferenceError: y is not defined

호이스팅

호이스팅은 작업을 시작하기 전에 작업 공간을 설정하는 것과 같습니다. 당신이 부엌에서 식사 준비를 하고 있다고 상상해 보세요. 요리를 시작하기 전에 모든 재료와 도구를 손이 닿는 곳에 있도록 카운터에 놓아두세요.

프로그래밍에서 코드를 작성할 때 JavaScript 엔진은 코드를 실제로 실행하기 전에 코드를 검토하고 해당 범위의 최상위에 모든 변수와 함수를 설정합니다. 즉, 코드에서 함수와 변수를 선언하기 전에 함수와 변수를 사용할 수 있습니다.

  • 세 ​​개(var, let, const) 모두 실제로 호이스팅되었습니다. 그러나 차이점은 호이스팅 과정에서 초기화되는 방식에 있습니다.

  • var는 호이스팅되고 정의되지 않은 상태로 초기화됩니다.

console.log(myVar); // Outputs: undefined
var myVar = 10;

  • let 및 const는 호이스팅되지만 초기화되지는 않습니다. 이는 블록 시작부터 선언이 나타날 때까지 "일시적 데드존"에 있음을 의미합니다.
console.log(myLet);
// ReferenceError: Cannot access 'myLet' before initialization
let myLet = 10;
console.log(myConst); 
// ReferenceError: Cannot access 'myConst' before initialization
const myConst = 20;

재할당 및 재초기화:

  • var는 다시 초기화(다시 선언)하고 재할당(새 값 할당)할 수 있습니다. ### var를 사용한 예
var x = 10;
x = 20; // Reassignment
console.log(x); // Outputs: 20

var x = 30; // Reinitialization
console.log(x); // Outputs: 30

  • let은 동일한 범위 내에서 다시 초기화될 수 없지만 재할당될 수 있습니다.
let y = 10;
y = 20; // Reassignment
console.log(y); // Outputs: 20

let y = 30; // SyntaxError: Identifier 'y' has already been declared
  • const는 재할당될 수 없습니다. 선언 시 초기화되어야 합니다. 그러나 const가 객체 또는 배열인 경우 객체 또는 배열의 내용(속성 또는 요소)을 수정할 수 있습니다. ### const의 예
const z = 10;
z = 20; // TypeError: Assignment to constant variable.

const z = 30; // SyntaxError: Identifier 'z' has already been declared

const 객체의 예

const obj = { a: 1 };
obj.a = 2; // Allowed, modifies the property
console.log(obj.a); // Outputs: 2

obj = { a: 3 }; // TypeError: Assignment to constant variable.

const 배열의 예

const arr = [1, 2, 3];
arr[0] = 4; // Allowed, modifies the element
console.log(arr); // Outputs: [4, 2, 3]

arr = [5, 6, 7]; // TypeError: Assignment to constant variable.
릴리스 선언문 이 기사는 https://dev.to/bazeng/an-overview-of-let-const-and-var-key-differences-explained-1ihi?1에 복제되어 있습니다. 침해가 있는 경우에는 Study_golang@163으로 문의하시기 바랍니다. .com에서 삭제하세요
최신 튜토리얼 더>
  • jQuery에서 숨겨진 요소의 높이를 효율적으로 얻는 방법은 무엇입니까?
    jQuery에서 숨겨진 요소의 높이를 효율적으로 얻는 방법은 무엇입니까?
    jQuery에서 숨겨진 요소의 높이 가져오기숨겨진 요소를 처리할 때 높이를 검색하는 것이 어려울 수 있습니다. 높이를 측정하기 위해 요소를 일시적으로 표시한 후 다시 숨기는 기존 방식은 비효율적입니다. 더 최적의 솔루션이 있나요?jQuery 1.4.2 접근 방식다음은 ...
    프로그램 작성 2024-11-05에 게시됨
  • Go 구조체 태그에 변수를 사용할 수 없는 이유는 무엇입니까?
    Go 구조체 태그에 변수를 사용할 수 없는 이유는 무엇입니까?
    Go 구조체 태그에서 변수 사용Go에서 구조체 태그는 구조체 내의 필드에 대한 메타데이터를 지정하는 데 사용됩니다. 문자열 리터럴을 사용하여 태그를 정의하는 것이 가능하지만 해당 위치에 변수를 사용하려고 하면 오류가 발생합니다.잘못된 사용:const ( TYPE...
    프로그램 작성 2024-11-05에 게시됨
  • Qopy: 개발자로서 제가 가장 좋아하는 클립보드 관리자
    Qopy: 개발자로서 제가 가장 좋아하는 클립보드 관리자
    개발자로서 저는 항상 작업 흐름을 더 원활하고 효율적으로 만들 수 있는 도구를 찾고 있습니다. 최근에 저는 Linux와 Windows에서 작동하는 오픈 소스 클립보드 관리자인 Qopy를 우연히 발견했습니다. 큐피(Qopy)는 무엇인가요? Qopy는 표준 ...
    프로그램 작성 2024-11-05에 게시됨
  • 내 버튼에 호버 효과가 작동하지 않는 이유는 무엇입니까?
    내 버튼에 호버 효과가 작동하지 않는 이유는 무엇입니까?
    호버 시 버튼 색상 변경: 대체 해결 방법호버 시 버튼 색상을 변경하려고 할 때 다음과 같은 경우 실망스러울 수 있습니다. 솔루션이 원하는 효과를 내지 못합니다. 제공된 샘플 코드를 고려하십시오.a.button { ... } a.button a:hover{ ...
    프로그램 작성 2024-11-05에 게시됨
  • Python만 사용하여 프런트엔드 구축
    Python만 사용하여 프런트엔드 구축
    프런트엔드 개발은 백엔드에 초점을 맞춘 개발자에게 벅차고 심지어 악몽 같은 작업이 될 수 있습니다. 내 경력 초기에는 프런트엔드와 백엔드 사이의 경계가 모호했고 모두가 두 가지를 모두 처리해야 했습니다. 특히 CSS는 끊임없는 투쟁이었습니다. 불가능한 임무처럼 느껴졌습...
    프로그램 작성 2024-11-05에 게시됨
  • Laravel에서 Cron 작업을 실행하는 방법
    Laravel에서 Cron 작업을 실행하는 방법
    이 튜토리얼에서는 Laravel에서 크론 작업을 실행하는 방법을 보여드리겠습니다. 무엇보다도 학생들을 위해 간단하고 쉽게 작업을 수행할 수 있습니다. Laravel 앱을 구축하는 동안 여러분의 컴퓨터에서 바로 이러한 자동화된 작업을 설정하고 실행하는 방법을 살펴보겠습니...
    프로그램 작성 2024-11-05에 게시됨
  • 패딩은 인라인 요소의 간격에 어떤 영향을 미치며 충돌을 어떻게 해결할 수 있습니까?
    패딩은 인라인 요소의 간격에 어떤 영향을 미치며 충돌을 어떻게 해결할 수 있습니까?
    인라인 요소의 패딩: 효과 및 제한소스에 따르면 인라인 요소의 상단과 하단에 패딩을 추가해도 영향을 미치지 않습니다. 주변 요소의 간격. 그러나 "패딩은 다른 인라인 요소와 겹칩니다"라는 설명은 패딩이 영향을 미치는 특정 상황이 있을 수 있음을 나타냅...
    프로그램 작성 2024-11-05에 게시됨
  • Django 클래스 기반 뷰가 쉬워졌습니다.
    Django 클래스 기반 뷰가 쉬워졌습니다.
    우리 모두 알고 있듯이 django는 웹 애플리케이션 개발 디자인에 MVT(모델-뷰-템플릿)를 사용합니다. 뷰 자체는 요청을 받고 응답을 반환하는 호출 가능 항목입니다. Django는 클래스 기반 뷰라는 것을 제공하므로 개발자는 클래스 기반 접근 방식을 사용하거나 O...
    프로그램 작성 2024-11-05에 게시됨
  • VAKX로 노코드 AI 에이전트 구축
    VAKX로 노코드 AI 에이전트 구축
    If you’ve been keeping up with the AI space, you already know that AI agents are becoming a game-changer in the world of automation and customer inter...
    프로그램 작성 2024-11-05에 게시됨
  • jQuery Datatable에서 커서 기반 페이지 매김을 구현하는 방법은 다음과 같습니다.
    jQuery Datatable에서 커서 기반 페이지 매김을 구현하는 방법은 다음과 같습니다.
    웹 애플리케이션에서 대규모 데이터세트로 작업할 때 페이지 매김은 성능과 사용자 경험에 매우 중요합니다. 데이터 테이블에 일반적으로 사용되는 표준 오프셋 기반 페이지 매김은 대규모 데이터 세트에는 비효율적일 수 있습니다. 커서 기반 페이지 매김은 특히 실시간 업데이트나...
    프로그램 작성 2024-11-05에 게시됨
  • 동기화 엔진이 웹 애플리케이션의 미래가 될 수 있는 이유
    동기화 엔진이 웹 애플리케이션의 미래가 될 수 있는 이유
    진화하는 웹 애플리케이션 세계에서는 효율성, 확장성, 원활한 실시간 경험이 무엇보다 중요합니다. 전통적인 웹 아키텍처는 응답성 및 동기화에 대한 현대적인 요구로 인해 어려움을 겪을 수 있는 클라이언트-서버 모델에 크게 의존합니다. 이것이 동기화 엔진이 등장하여 오늘날 ...
    프로그램 작성 2024-11-05에 게시됨
  • Python을 사용한 컴퓨터 비전 소개(1부)
    Python을 사용한 컴퓨터 비전 소개(1부)
    참고: 이 게시물에서는 쉽게 따라할 수 있도록 회색조 이미지만 사용합니다. 이미지란 무엇입니까? 이미지는 값의 행렬로 생각할 수 있으며, 각 값은 픽셀의 강도를 나타냅니다. 이미지 형식에는 세 가지 주요 유형이 있습니다. 이진: 이 형식의 이미지는 값이 ...
    프로그램 작성 2024-11-05에 게시됨
  • 웹사이트용 HTML 코드
    웹사이트용 HTML 코드
    항공 관련 웹사이트를 구축하려고 노력해왔습니다. 저는 AI를 사용하여 코드를 생성하는 전체 웹사이트를 생성할 수 있는지 확인하고 싶었습니다. HTML 웹사이트가 블로그와 호환됩니까, 아니면 자바스크립트를 사용해야 합니까? 데모로 사용한 코드는 다음과 같습니다. <...
    프로그램 작성 2024-11-05에 게시됨
  • 프로그래머처럼 생각하기: Java의 기본 사항 배우기
    프로그래머처럼 생각하기: Java의 기본 사항 배우기
    이 글에서는 자바 프로그래밍의 기본 개념과 구조를 소개합니다. 변수와 데이터 유형에 대한 소개로 시작한 다음 연산자와 표현식은 물론 제어 흐름 프로세스에 대해 논의합니다. 둘째, 메서드와 클래스를 설명하고 입력 및 출력 작업을 소개합니다. 마지막으로 이 기사에서는 급여...
    프로그램 작성 2024-11-05에 게시됨
  • PHP GD는 두 이미지의 유사성을 비교할 수 있나요?
    PHP GD는 두 이미지의 유사성을 비교할 수 있나요?
    PHP GD가 두 이미지의 유사성을 결정할 수 있습니까?고려 중인 질문은 두 이미지가 동일한지 확인하는 것이 가능한지 묻습니다. 차이점을 비교하여 PHP GD. 이는 두 이미지 간의 차이를 획득하고 그것이 완전히 흰색(또는 균일한 색상)으로 구성되어 있는지 결정하는 것...
    프로그램 작성 2024-11-05에 게시됨

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3