신나는 JavaScript
-
Modren JS - 프로토타입신나는 JavaScript 2023. 1. 17. 14:00
자바스크립트는 프로토타입 기반 객체지향 프로그래밍 언어임. 클래스없이도 객체를 생성할 수 있음. 자바스크립트의 모든 객체는 부모객체와 연결되어있음. 부모객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있음. 부모객체를 Prototype(프로토타입)이라 함. var student = { name: 'Lee', score: 90 }; // student에는 hasOwnProperty 메소드가 없지만 아래 구문은 동작한다. console.log(student.hasOwnProperty('name')); // true console.dir(student); 해당객체의 프로토타입인 Object에 hasOwnProperty라는 메소드가 정의되어있으므로 사용가능한 것 [[Prototype]] vs prototype..
-
Modren JS - 타입 체크신나는 JavaScript 2023. 1. 16. 11:33
자바스크립트는 동적 타입 언어임. 개발자가 타입지정을 따로 하지않음 1.typeof typeof ''; // string typeof 1; // number typeof NaN; // number typeof true; // boolean typeof []; // object typeof {}; // object typeof new String(); // object typeof new Date(); // object typeof /test/gi; // object typeof function () {}; // function typeof undefined; // undefined typeof null; // object (설계적 결함) typeof undeclared; // undefined (설계적 ..
-
Modren JS - 함수신나는 JavaScript 2023. 1. 15. 20:10
함수 : 어떠한 작업을 수행하기 위해 필요한 문(statement)들의 집합을 정의한 코드블록 자바스크립트의 함수는 객체(일급객체, First-class object)임 일급객체의 특징 무명의 리터럴로 표현이 가능 변수나 자료구조(객체,배열...)에 저장 가능 함수의 파라미터로 전달 가능 반환값(return value)로 사용 가능 // 1. 무명의 리터럴로 표현이 가능하다. // 2. 변수나 자료 구조에 저장할 수 있다. var increase = function (num) { return ++num; }; var decrease = function (num) { return --num; }; var predicates = { increase, decrease }; // 3. 함수의 매개변수에 전달할 ..
-
Modren JS - 객체와 변경불가성(Immutability)신나는 JavaScript 2023. 1. 15. 15:24
변경불가성(Immutability)는 객체가 생성된 이후 그 상태를 변경할 수 없는 디자인 패턴을 의미함. var user1 = { name: 'Lee', address: { city: 'Seoul' } }; var user2 = user1; // 변수 user2는 객체 타입이다. user2.name = 'Kim'; console.log(user1.name); // Kim console.log(user2.name); // Kim 위의 코드처럼 되는 이유는 user1과 user2가 같은 address를 참조하고 있긴 때문임 이러한 것이 의도된 것이 아니라면 주의가 필요 ! 불변 데이터 패턴(immutable data pattern) 객체의 방어적 복사(defensive copy) -Object.assign..
-
Modren JS - 객체신나는 JavaScript 2023. 1. 10. 23:45
객체(Object) - 자바스크립트를 이루고 있는 거의 모든 것이 객체임. 원시타입을 제외한 나머지 값들은 모두 객체. - 키(key)와 값(value)로 구성된 프로퍼티(Property)들의 집합이다. - 객체는 "프로토타입(prototype)"이라고 불리는 객체의 프로퍼티와 메소드를 상속받을 수 있다. 1. 객체 생성 방법 1.1 객체 리터럴 {} 중괄호를 사용하여 객체를 생성함 const emptyObject = {}; console.log(typeof emtyObject); //object const person = { name : 'Heo', sayHello : function(){ console.log('Hi I'm ' + this.name); } }; console.log(typeof per..
-
Modren JS - 타입변환신나는 JavaScript 2023. 1. 8. 14:00
자바스크립트의 모든 값은 타입이 있음. - 개발자에 의해 의도적으로 타입이 변환 : 명시적 타입 변환(Explicit coercion), 타입 캐스팅(Type casting) - 자바스크립트 엔진에 의해 자동 변환 : 암묵적 타입 변환(Implicit coerction), 타입 강제 변환(Type coercion) 암묵적 타입 변환시 자동 변환된 값은 필요한 표현식의 평가가 종료되면 가비지 컬렉터에 의해 메모리에서 제거됨. 1. 암묵적 타입 변환 1.1 문자열 타입으로 변환. ex) 1 +'' >> '1' 1.2 숫자 타입으로 변환 + 단항 연산자 사용 ex) +'3' >> 3 2. 명시적 타입 변환 2.1 문자열 타입으로 변환 String 생성자 함수를 new 연산자 없이 호출. console.log(..
-
Modren JS - 제어문신나는 JavaScript 2023. 1. 6. 00:27
주어진 조건에 따라 코드블록을 실행하거나 반복실행할때 사용함. 코드의 실행순서를 인위적으로 제어할 수 있음. 1. 조건문 1.1 if..else 문 if (조건식1) { // 조건식1이 참이면 이 코드 블록이 실행된다. } else if (조건식2) { // 조건식2이 참이면 이 코드 블록이 실행된다. } else { // 조건식1과 조건식2가 모두 거짓이면 이 코드 블록이 실행된다. } 삼항 조건 연산자로 바꿔쓰기 가능 const x = 2; const result = x%2 ? '홀수' : '짝수' ; //if..else를 삼항연산자로 바꾼 경우 const num = 2; const kind = num ? (num > 0 ? '양수' : '음수' ) : '영' ; //if..else if..else를..
-
Modren JS - 연산자신나는 JavaScript 2023. 1. 3. 22:42
- 표현식(expresstion)은 하나의 값으로 평가될 수 있는 문(statement)이다. > 하나의 값을 만든다. - 문(statement)은 자바스크립트 엔진에게 내리는 명령이다. 연산자 - 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입연산등을 수행해 하나의 값을 만듬. 1. 산술 연산자 - 수학적 계산을 수행해 새로운 숫자 값을 만듬. - 산술연산을 할 수 없는 경우에는 NaN을 반환한다. 이항 산술 연산자의미 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 % 나머지 단항 산술 연산자의미 ++ 증가 -- 감소 + 어떠한 효과도 없다. 음수를 양수로 반전하지도 않는다. - 양수를 음수로 음수를 양수로 반전한 값을 반환한다. 증가/감소(++/--) 연산자는 위치에 따라 전위, 후위로 나뉜다..