본문 바로가기

전체 글

(75)
[모던 JS] CH16 프로퍼티 어트리뷰트, CH17 생성자 함수에 의한 객체 생성 CH 16. 프로퍼티 어트리뷰트 16.1 내부 슬롯과 내부 메서드 - 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 사용하는 의사 프로퍼티와 의사 메서드 - 이중 대괄호로 감싼 이름들이 내부 슬롯과 내부 메서드 - 자바스크립트 엔진에서 실제로 동작하지만, 개발자가 접근할 수 있도록 외부로 공개된 객체의 프로퍼티는 아님 : 따라서, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공함 ex) 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가짐 -> 원칙적으로 접근 불가 -> __proto__를 통해 간접적으로 접근 가능 const o = {}; o.[[Prototype]] // Uncaught SyntaxError o.__proto__ // Object.prototy..
[모던 JS] CH14 전역 변수의 문제점, CH15 let, const 키워드와 블록 레벨 스코프 CH 14. 전역 변수의 문제점 14.1 변수의 생명 주기 - 전역 변수의 무분별한 사용은 위험 14.1.1 지역 변수의 생명 주기 - 변수는 자신이 선언된 위치에서 생성되고 소멸함 - 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸함 - 지역 변수의 생명 주기는 함수의 생명 주기와 일치함 - 호이스팅은 스코프를 단위로 동작함 - 호이스팅은 변수 선언이 스코프의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 말함 14.1.2 전역 변수의 생명 주기 - 전역 코드는 명시적인 호출 없이 실행됨 - var 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 됨 - 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치함 - var 키워드로 선언한 전역 변수의 생..
[모던 JS] CH23 실행컨텍스트, CH13 스코프 CH23. 실행컨텍스트 23.1 소스코드의 타입 23.2 소스코드의 평가와 실행 - 소스 평가 과정에서는 실행 컨텍스트를 생성하고 변수, 함수 등의 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프에 등록함 23.3 실행 컨텍스트의 역할 1. 전역 코드 평가 - 전역 코드 실행하기 앞서 전역 코드 평가 과정을 거침 - 소스코드 평가 과정에서는 선언문만 먼저 실행됨 - var 키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수는 전역 객체의 프로퍼티와 메서드가 됨 2. 전역 코드 실행 - 런타임이 시작되어 전역 코드가 순차적으로 실행되기 시작함 - 전역 변수에 값이 할당되고 함수가 호출됨 3. 함수 코드 평가 - 함수 호출에 의해 코드 실행 순서가 변경되어..
[코드] 1. 짝수와 홀수 function solution(num) { var answer = ''; if (num % 2 == 0) { answer = "Even"; } else { answer = "Odd"; } return answer; } 2. 평균 구하기 function solution(arr) { var answer = 0; for (var i = 0; i < arr.length; i++){ answer += arr[i]; } return (answer / arr.length) ; } 3. 나머지가 1이 되는 수 찾기 function solution(n) { var answer = 0; var x = 1; while(true){ if (n % x === 1) { answer = x; break; } x..
[모던 JS] CH12. 함수 CH12. 함수 12.1 함수란? // 함수 정의 function add(x, y) { return x + y; } // 함수 호출 add(2, 5); // 7 12.2 함수를 사용하는 이유 - 몇 번이든 재사용할 수 있음 - 동일한 작업을 반복적으로 수행하는 경우 호출해서 사용 - 유지보수의 편의성을 높이고, 코드의 신뢰성을 높이는 효과가 있음 - 적절한 함수의 이름은 코드의 가독성을 향상시킴 12.3 함수 리터럴 - 함수 리터럴은 function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성 - 함수는 객체, 하지만 일반 객체와는 다름 : 일반 객체는 호출할 수 없지만 함수는 호출할 수 있음 12.4 함수 정의 - 함수를 정의하는 4가지 방법 12.4.1 함수 선언문 // 함수 선언문 fu..
[모던 JS] CH10 객체 리터럴, CH11 원시 값과 객체의 비교 CH10. 객체 리터럴 10.1 객체란? - 원시 타입의 값은 변경 불가능한 값이지만 객체 타입의 값인 객체는 변경이 가능한 값 - 객체는 0개 이상의 프로퍼티로 구성된 집합으로 프로퍼티는 키와 값으로 구성됨 - 객체는 프로퍼티와 메서드로 구성된 집합체 ! 프로퍼티: 객체의 상태를 나타내는 값 ! 메서드: 프로퍼티를 참조하고 조직할 수 있는 동작 10.2 객체 리터럴에 의한 객체 생성 다양한 객체 생성 방법을 지원함 - 객체 리터럴 - Object 생성자 함수 - 생성자 함수 - Object.create 메서드 - 클래스 var person = { name: 'Lee', sayHello: function () { console.log(`Hello! my name is ${this.name}.`); } }..
[모던 JS] CH8 제어문, CH9 타입 변환과 단축 평가 CH8. 제어문 8.1 블록문 : 0개 이상의 문을 중괄호로 묶은 것 : 자바스크립트는 블록문을 하나의 실행 단위로 취급 : 문의 끝에는 세미콜론을 붙이는 것이 일반적이나, 블록문은 자체 종결성을 갖기 때문에 세미콜론을 붙이지 않음 // 블록문 { var foo = 10; } // 제어문 var x = 1; if (x 0) { kind = '양수'; } else if (num < 0){ kind..
[모던 JS] CH6 데이터 타입, CH7 연산자 CH6. 데이터 타입 - 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있음 6.1 숫자타입 - JS는 하나의 숫자 타입만 존재함 - 모든 수를 실수로 처리하며 정수만 표현하기 위한 데이터 타입이 존재하지 않음 var integer = 10; var double = 10.12; var negative = -20; - 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않기 때문에 모두 10진수로 해석됨 var binary = 0b01000001; // 2진수 var octal = 0o101; // 8진수 var hex = 0x41; // 16진수 console.log(binary); // 65 console.log(octal); // 65 console.log(hex); // 65 c..