-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
주제
JavaScript 는 어떻게 프로그램을 처리하는가
선정 이유
선 파싱&컴파일 -> 후 실행 을 기억하자
책 내용 (p138~)
선컴파일 후 실행을 입증할 수 있는 JS 특징 3가지
- 구문오류
var greeting = "안녕하세요"
console.log(greeting) ⬅️ 출력 X
greeting = .'안녕' ⬅️ 🚨 SyntaxError 발생
실행 전, 프로그램을 먼저 파싱하면서 세번째 줄에 오류가 있다는 것을 먼저 발견하기 때문
- 초기오류
console.log("Howdy"); ⬅️ 출력 X
saySomething("Hello","Hi"); ⬅️ 🚨 엄격모드 SyntaxError
function saySomething(greeting,greeting) { ⬅️ 매개변수네임의 중복 허용 X
"use strict";
console.log(greeting);
}
엄격 모드에서 프로그램실행 시, 가이드를 어긴 경우에 초기오류가 발생함,
프로그램 실행 전, 파싱이 되기때문에 엄격모드이고, 매개변수명이 중복인 것을 먼저 발견하기 때문
- 호이스팅
function saySomething() {
var greeting = "Hello";
{
greeting = "Howdy"; ⬅️ 🚨 ReferenceError
let greeting = "Hi"; ⬅️ 블록 레벨 스코프에서 let 키워드 변수가 실행되기 전에 접근하게 되면 참조에러가 발생함
console.log(greeting);
}
}
saySomething(); // ReferenceError: Cannot access 'greeting' before => initialization
프로그램이 실행되기 전 파싱이 이루어져 스코프와 선언에 대한 처리가 진행되기 때문!
해당 변수가 블록레벨 스코프이고, 초기화 이전에 참조할 경우 일시적 사각지대에 있어 참조에러 발생
Reactions are currently unavailable