본문 바로가기

개발서적/모던 자바스크립트 Deep Dive28

스코프 (모던 자바스크립트 Deep Dive) 스코프란? 모든 프로그래밍 언어에서 중요한 개념이다. var과 let, const로 선언한 스코프는 다르게 동작한다. 함수의 매개변수는 함수 내부에서만 참조 가능하며 외부에서는 참조할 수 없다. 매개변수의 스코프는 함수 내부이기 때문이다. 스코프는 식별자가 유효한 범위이다. var x = 'global'; function foo() { var x = 'local'; console.log(x); // local } foo(); console.log(x); // global 함수 외부와 내부에서 같은 이름으로 선언된 변수가 있지만 참조할 때 자바스크립트 엔진은 두 개의 변수 중 어떤 변수를 참조해야할지 결정한다. 이는 스코프에 따라 정해진다. 스코프 개념이 없다면 같은 이름을 갖는 변수는 프로그램 내에서 충.. 2024. 4. 16.
함수 (모던 자바스크립트 Deep Dive) 12.1 함수란? 입력을 받아 출력을 내보내는 일련의 과정 // 함수 정의 function add(x, y) { // x, y :매개변수 return x + y; // 반환값 }; // 함수 호출 add(2, 5); // 2, 5: 인수 12.2 함수를 사용하는 이유 코드 재사용 가능 ! 내부 코드를 보지 않고도 식별자를 보고 함수의 역할을 파악할 수 있게 해야한다. 12.3 함수 리터럴 함수는 객체다. 그러나 일반 객체는 호출할 수 없지만 함수는 호출이 가능하다. 함수 이름은 생략할 수 있다. 기명 함수와 익명 함수가 존재 익명 함수 : 이름이 없는 것이 아닌 함수 이름 대신 변수에 함수를 대입한 방식이다. let anonymousFunc = function() { console.log('this fu.. 2024. 4. 16.
원시 값과 객체의 비교 (모던 자바스크립트 Deep Dive) 11.1 원시 값 11.1.1 변경 불가능한 값 변경 불가능한 값 원시 값 자체를 변경하지 못한다는 말 원시 값을 변경 불가능하다는 말은 메모리 관점에서 접근해야 이해가 쉽다. 원시 값은 변경 불가능하기 때문에 변수에 값 재할당 시 기존 메모리 공간이 아닌 새로운 메모리 공간을 확보하여 저장하는 것이다. 변수의 값을 변경 불가능한 것은 상수이다. → 재할당 금지! 11.1.2 문자열과 불변성 문자열 타입 - 2바이트 문자 하나당 2바이트, 문자의 개수에 따라 확보하는 메모리 공간이 달라짐 숫자 타입 - 8바이트 숫자의 크기에 따라 관계없이 8바이트 사용 이외 원시 타입은 브라우저 제조사의 구현에 따라 크기가 다를 수 있다. 자바스크립트는 문자열의 형태로 데이터를 저장한다. 문자열 타입의 변수에 다른 문자.. 2024. 4. 16.
객체 리터럴 (모던 자바스크립트 Deep Dive) 10.1 객체란? 자바스크립트는 객체 기반의 프로그래밍 언어 원시 값을 제외하고는 모두 객체이다. 객체 프로퍼티의 집합 ❓ 일반 함수? 메서드? 함수는 메서드를 포함한다. 함수가 객체의 프로퍼티로 저장되면 그것은 메서드이다. → 메서드는 객체가 없으면 없는 것 함수는 객체와 관계없이 독립적이다. 메서드는 객체에 종속적이다. 메서드를 수행하려면 반드시 객체를 통해서 수행하여야 한다. 메서드 동작의 주체는 해당 객체. 자바스크립트에서의 객체? 자바스크립트 내장 객체 : Built-in Object Global, Object, String, Number, Boolean, Data, Array, Math, RegExp, Error 등 브라우저 내장 객체 : Native Object 자바스크립트 엔진이 빌드될 때.. 2024. 4. 16.
타입 변환과 단축 평가 (모던 자바스크립트 Deep Dive) 9.1 타입 변환이란? 명시적 타입 변환 / 타입 캐스팅 의도적으로 값의 타입을 변환하는 것 암묵적 타입 변환 / 타입 강제 변환 의도와 상관없이 자바스크립트 엔진에 의해 타입이 변환되는 것 원시 값은 변경 불가능하기 때문에 타입을 변환한다는 것은 기존 원시 값을 이용해 다른 타입의 새로운 원시 값을 생성한 다는 것 → 재할당 아님! 9.2 암묵적 타입 변환 자바스크립트는 암묵적 타입 변환을 통해 에러를 내야하는 상황에서 에러를 내지 않게 처리한다. ??? 9.2.1 문자열 타입으로 변환 값 뒤에 + ‘’ 을 붙이면 문자열로 변환된다… Symbol 타입은 제외 템플릿 리터럴을 사용해 문자열로 변환이 가능하다. 9.2.2 숫자 타입으로 변환 값 앞에 + 을 붙이면 숫자 타입으로 변환된다… 숫자 타입으로 변.. 2024. 4. 15.
연산자 (모던 자바스크립트 Deep Dive) 7.8 typeof 연산자 피연산자의 데이터 타입을 문자열로 반환한다. null은 반환하지 않는다. typeof null → object 반환 굉장한 버그이며 아직 수정되지 않았다 null임을 확인하려면 typeof 대신 ===을 사용하자 선언하지 않은 식별자를 typeof 연산을 하면 참조에러 대신 undefined를 반환한다 7.10 그 외의 연산자 다른 챕터에서 더 자세하게 다룰 예정인 연산자들 📎 연산자 정의 ?. 옵셔널 체이닝 연산자 ?? null 병합 연산자 delete 프로퍼티 삭제 new 생성자 함수를 호출할 때 사용하여 인스턴스를 생성 instanceof 좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별 in 프로퍼티 존재 확인 2024. 4. 15.
728x90
반응형