Skip to content

[4주차] JS에서 프로그램을 처리하는 방법 #18

@bread1022

Description

@bread1022

주제

JavaScript 는 어떻게 프로그램을 처리하는가

선정 이유

선 파싱&컴파일 -> 후 실행 을 기억하자

책 내용 (p138~)

선컴파일 후 실행을 입증할 수 있는 JS 특징 3가지

  1. 구문오류
var greeting = "안녕하세요"

console.log(greeting) ⬅️ 출력 X
greeting = .'안녕' ⬅️ 🚨 SyntaxError 발생
실행 전, 프로그램을 먼저 파싱하면서 세번째 줄에 오류가 있다는 것을 먼저 발견하기 때문
  1. 초기오류
console.log("Howdy");  ⬅️ 출력 X

saySomething("Hello","Hi"); ⬅️ 🚨 엄격모드 SyntaxError

function saySomething(greeting,greeting) {   ⬅️ 매개변수네임의 중복 허용 X
    "use strict";
    console.log(greeting);
}
엄격 모드에서 프로그램실행 시, 가이드를 어긴 경우에 초기오류가 발생함,
프로그램 실행 전, 파싱이 되기때문에 엄격모드이고, 매개변수명이 중복인 것을 먼저 발견하기 때문
  1. 호이스팅
function saySomething() {
    var greeting = "Hello";
    {
        greeting = "Howdy";  ⬅️ 🚨 ReferenceError
        let greeting = "Hi"; ⬅️ 블록 레벨 스코프에서 let 키워드 변수가 실행되기 전에 접근하게 되면 참조에러가 발생함
        console.log(greeting);
    }
}

saySomething(); // ReferenceError: Cannot access 'greeting' before => initialization
프로그램이 실행되기 전 파싱이 이루어져 스코프와 선언에 대한 처리가 진행되기 때문!
해당 변수가 블록레벨 스코프이고, 초기화 이전에 참조할 경우 일시적 사각지대에 있어 참조에러 발생

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions