ES5에서 새로운 기능이 추가되고 기존 기능 중 일부가 변경 > 하위 호환성 문제가 생김 > 변경사항 대부분은 ES5 기본모드에서 활성화되지 않도록 설계
use strict
지시자를 통해 엄격모드(strict mode)를 활성화 했을 때만 변경사항이 활성화
'use strict'
는 스크립트 최상단에 위치시킨다use strict
명시할 필요가 없다'use strict'
입력 후 Shift + Enter
를 눌러 스크립트 입력명세서에 등록된 지 얼마 안 된 기능은 특정 엔진에서 지원하지 않음 👉 Babel 사용
let fruit = prompt("과일 이름을 입력하세요");
let bag = {
[fruit]: 5; // 프로퍼티 이름을 동적으로 받아 옴
};
alert(bag.apple); // fruit에 apple이 할당되었다면, 5가 출력
[fruit]
는 프로퍼티 이름을 변수 fruit
에서 가져오겠다는 것을 의미한다
위와 아래는 같은 코드
let bag = {};
bag[fruit] = 5;
대괄호 안에는 복잡한 표현식이 올 수도 있다
let fruit = 'apple';
let bag = {
[fruit + 'Computers']: 5 // bag.appleComputer = 5
};
자바스크립트는 존재하지 않는 프로퍼티에 접근 시에 에러가 발생하지 않고 undefined
를 반환한다
👉 이 특징을 응용해서 프로퍼티 존재 여부를 확인 가능
let user = { name: 'Jinju', age: 26};
alert('age' in user); // true
alert('blahblah' in user); // false
프로퍼티는 따옴표로 감싼 문자열
obj.property
obj["property"]
delete obj.prop
"key" in obj
for (let key in obj)