본문 바로가기

2022-2 웹개발 스터디

(28)
[모던 JS] CH 20. strict mode, CH 21. 빌트인 객체, CH22. this CH 20. strict mode 20.1 strict mode란? - 개발자의 의도와 상관없이 발생한 암묵적 전역은 오류를 발생시키는 원인이 될 가능성이 큼 - strict mode(엄격 모드)는 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킴 20.2 strict mode 의 적용 - 전역의 선두 또는 함수 몸체의 선두에 'use strict';를 추가함 'use strict'; function foo() { x = 10; // ReferenceError } foo(); 20.3 전역에 strict mode를 적용하는 것은 피하자 - 전역에 적용한 strict mode는 스..
[모던 JS] CH19 프로토타입 CH19. 프로토타입 19.1 객체지향 프로그래밍 - 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라고 함 - 객체지향 프로그래밍은 객체의 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어 생각함 - 객체의 상태 데이터를 프로퍼티, 동작을 메서드라고 함 19.2 상속과 프로토타입 - 자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거함 - 중복을 제거하는 방법? 기존의 코드를 적극적으로 재사용하는 것 -> 상속 // 생성자 함수 function Circle(radius) P this.radius = radius; } Circle.prototype.getArea = function() { return Math.PI ..
[모던 JS] CH18 함수와 일급객체 CH18. 함수와 일급 객체 18.1 일급객체 >> 일급 객체의 조건 1. 무명의 리터럴로 생성할 수 있음 (런타임에 생성 가능) 2. 변수나 자료구조 (객체, 배열 등)에 저장 가능 3. 함수의 매개변수에 전달 가능 4. 함수의 반환값으로 사용가능 - 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미 - 객체는 값이므로 함수는 값과 동일하게 취급할 수 있음 - 자바스크립의 함수는 일급객체 18.2 함수 객체의 프로퍼티 - 함수는 객체이므로 프로퍼티를 가질 수 있음 - arguments, caller, length, name, prototype 프로퍼티는 모두 함수 객체의 데이터 프로퍼티 - __proto__는 접근자 프로퍼티, 함수 객체 고유의 프로퍼티가 아니라 Object.pr..
[모던 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..