오늘 한 것
제어문
숫자, 문자열은 객체로 쓰면 암묵적으로 객체 타입으로 변환해 참조한다.
1 | // 문자열은 유사배열이므로 for 문으로 순회할 수 있다. |
문자열은 원시값이지만 유사배열로서 객체로 암묵적 타입 변환 후 length 프로퍼티를 참조할 수 있다.
타입 변환과 단축 평가
boolean 타입 변환
1 | // 전달받은 인수가 Falsy 값이면 true, Truthy 값이면 false를 반환한다. |
명시적으로 타입을 변환하는 방법
- String(), Number() 등 생성자 함수를 new 연산자 없이 호출하는 방법
- Object.prototype.toString / parseInt() 메서드를 사용하는 방법
- 연산자를 이용하는 방법
명시적인 것은 3 → 2 → 1 순이다.
2번 메서드를 사용하는 것도 좋지만 메서드 마다 사용법도 다르고 3번이 가장 짧고 명시적이다.
1번 생성자 함수는 본래 정석인 사용법이 아니기 때문에 지양한다.
객체 리터럴
객체
1 | var person = { |
프로퍼티 키는 식별자가 아니기 때문에 식별자 명명 규칙을 안 지켜도 문자열이기만 하면 된다.
1 | var person = { |
식별자 명명 규칙을 지키지 않을 시에는 [‘first-name’] 대괄호 표기법을 따라야한다.
제일 좋은 건 식별자 명명 규칙을 지키고 편하게 쓰자.
프로퍼티 삭제 → delete 연산자
1 | delete person.age; |
사실 굳이 프로퍼티를 지울 일은 많지 않음. → 안티패턴(할 수는 있지만, 굳이 하는 것을 지양하는 것)이다.
delete 연산자는 안 쓰는게 좋다.
프로퍼티 축약표현 (중요!)
프로퍼티 키와 변수 이름이 같을 경우 축약할 수 있다.
1 | // ES5 |
객체 리터럴 내부에서 계산된 프로퍼티 키를 동적으로 생성할 수 있다. (ES5에서는 객체 리터럴 외부에서 해야했다.)
1 | // ES5 |
메서드 축약 표현
1 | // ES5 |