본문 바로가기

Language/Javascript15

[모던 자바스크립트 Deep Dive][15] let, const 키워드와 블록 레벨 스코프 var 키워드로 선언한 변수의 문제점변수 중복 선언 허용만약 동일한 이름의 변수가 선언되어 있는 것을 모르고 변수를 중복 선언하면서 값을 할당했다면 먼저 선언된 변수 값이 변경되는 부작용이 발생한다.var x = 1;var y = 1;// var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다.// 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다.var x = 100;// 초기화문이 없는 변수 선언문은 무시된다.var y;console.log(x); // 100console.log(y); // 1  함수 레벨 스코프var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.함수 레벨 스코프는 전역 변수를 남발할 가능성을 높.. 2024. 10. 25.
[모던 자바스크립트 Deep Dive][14] 전역 변수의 문제점 변수의 생명 주기지역 변수의 생명 주기지역 변수의 생명주기는 함수의 생명 주기와 일치한다.변수 선언은 선언문이 어디에 있든 상관없이 가장 먼저 실행된다. 즉, 런타임 이전 단계에서 엔진에 의해 먼저 실행된다.1. 엔진에 의해 x 변수 선언 및 초기화(undefined)2. 함수 구성문 순차적으로 실행되기 시작3. 변수 할당문이 실행되면 x변수에 값 할당4. 함수가 종료하면 x 변수도 소멸되어 생명 주기 종료 전역 변수의 생명 주기함수와 달리 전역 코드는 명시적인 호출 없이 실행된다.var 키워드로 선언한 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치한다. 전역 변수의 문제점1. 전역 변수 선언시 모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용 하는 것이다.  -> 유효 범위.. 2024. 8. 7.
[모던 자바스크립트 Deep Dive][13] 스코프 스코프란?스코프: 식별자가 유효한 범위식별자 결정 : 엔진이 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조할 것인지 결정하는 것var var1 = 1; // 코드의 가장 바깥 영역에서 선언한 변수if (true) { var var2 = 2; // 코드 블록 내에서 선언한 변수 if (true) { var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수 }}function foo() { var var4 = 4; // 함수 내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 }}console.log(var1); // 1console.log(var2); // 2console.log(var3); // 3conso.. 2024. 8. 6.
[모던 자바스크립트 Deep Dive][12] 함수 함수란?함수 : 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것매개 변수 : 함수 내부로 입력을 전달받는 변수인수 : 입력반환값 : 출력함수는 함수 정의를 통해 생성하며 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시해야 한다.이를 함수 호출이라 한다.// 함수 호출var result = add(2, 5);// 함수 add에 인수 2, 5를 전달하면서 호출하면 반환값 7을 반환한다.console.log(result); // 7  함수를 사용하는 이유1. 코드의 재사용2. 유지보수의 편의성, 코드의 신뢰성 상승3. 코드의 가독성 향상  함수 리터럴function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성된다.함수 리터럴도 평가되어 값을.. 2024. 6. 9.