기록/Modern JavaScript Deep Dive(46)
-
15. let, const 키워드와 블록 레벨 스코프
var 키워드로 선언한 변수의 문제점 1. 변수 중복 허용 var x = 1; var y = 1; // 초기화문이 있는 변수 선언문 // var 키워드가 없는 것처럼 동작함 var x = 100; // 초기화문이 없는 변수 선언문 // 무시됨 var y; console.log(x); // 100 console.log(y); // 1 var 키워드로 선언한 변수를 중복 선언하면 초기화문 유무에 따라 다르게 동작함 초기화문이 있는 변수 선언문 : var 키워드가 없는 것처럼 동작함 초기화문이 없는 변수 선언문 : 무시됨 변수를 중복 선언하면서 값을 할당하면 먼저 선언된 변수 값이 변경됨 2. 함수 레벨 스코프 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 됨 의도치..
2022.10.24 -
14. 전역 변수의 문제점
변수의 생명 주기 1. 지역 변수의 생명 주기 함수가 호출되면 생성됨 함수가 종료하면 소멸함 함수의 생명 주기와 일치함 var x = 'global'; function foo() { console.log(x); // 1 var x = 'local'; } foo(); console.log(x); // global foo 함수 내부의 지역 변수 x는 1에서 이미 선언되어 undefined 로 초기화 되어 있다. 따라서 지역 변수 x를 참조해 값을 출력한다. 호이스팅 스코프를 단위로 동작함 변수 선언이 스코프의 최상위로 끌어 올려진 것 처럼 동작하는 자바스크립트 고유의 특징 2. 전역 변수의 생명 주기 var 키워드로 선언한 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치한다. 전역 객체 코드가 실행되..
2022.10.24 -
13. 스코프
스코프란? 식별자가 유효한 범위 식별자가 선언된 위치에 의해서 유효 범위가 결정됨 식별자 결정 : 이름이 같은 변수 중에서 어떤 변수를 참조할 지 결정하는 것 변수 이름의 충돌을 방지함 스코프의 종류 1. 전역과 전역 스코프 전역 : 코드의 가장 바깥 영역 전역은 전역 스코프를 만듦 전역에 변수를 선언하면 전역 변수가 됨 전역 변수는 어디서든지 참조 가능 2. 지역과 지역 스코프 지역 : 함수 몸체 내부 지역은 지역 스코프를 만듦 지역에 변수를 선언하면 지역 변수가 됨 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효함 스코프 체인 스코프가 계층적으로 연결된 것 스코프는 함수의 중첩에 의해 계층적 구조를 가짐 외부 함수의 지역 스코프 === 중첩 함수의 상위 스코프 모든 지역 스코프의 최상위 ..
2022.10.24 -
12. 함수
함수란? 수학에서 함수는 입력(input)을 받아 출력(output)을 내보내는 일련의 과정을 정의한 것이다. 프로그래밍 언어에서 함수는 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 함수 내부로 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수 (argument), 출력을 반환값(return value)이라고 한다. 함수는 값이고 여러 개 존재할 수 있기 때문에 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있다. // 함수 정의 function add(x, y) { return x + y; } // 함수 호출 var result = add(2, 5); console.log(result); // 7 함수를 사용하는..
2022.10.19 -
11. 원시 값과 객체의 비교
원시 값 1. 변경 불가능한 값 원시 값은 읽기 전용 값임 (데이터의 신뢰성 보장) 원시 값 자체는 변경할 수 없음 변수 값은 재할당을 통해 교체할 수 있음 // const 키워드를 사용해 선언한 변수는 재할당이 금지된다. const 0 = {}; // const 키워드를 사용해 선언한 변수에 할당한 원시 값은 변겅할 수 없다. // 하지만 const 키워드를 사용해 선언한 변수에 할당한 객체는 변경할 수 있다. o.a = 1; console.log(o); // {a : 1} const 키워드를 사용해 선언한 변수에 할당한 원시 값은 변경 불가능 const 키워드를 사용해 선언한 변수에 할당한 객체는 변경 가능 원시 값을 재할당하면 일어나는 일 새로운 메모리 공간을 확보함 재할당한 값을 저장함 변수가 참..
2022.10.11 -
10. 객체 리터럴
객체란? 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조 0개 이상의 프로퍼티/메서드로 구성된 집합 프로퍼티는 키(key) 와 값(value) 로 구성됨 변경 가능한 값(mutable value) 함수는 일급 객체이기 때문에 값으로 취급할 수 있음 따라서 함수도 객체의 프로퍼티 값으로 사용 가능함 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드(method) 라고 부름 프로퍼티와 메서드의 역할 프로퍼티 : 객체의 상태를 나타내는 값 (data) 메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작 객체 리터럴에 의한 객체 생성 [ 인스턴스 (instance) ] 클래스에 의해 생성되어 메모리에 저장된 실체 객체가 메모리에 저장되어 실제로 존재하는 것에 초점을 맞춘 용어 [ 자바스크..
2022.10.03