key : value 방식으로 저장하고 읽어오는 데이터는
key를 참조하여 value를 가져올 수 있다.
점 표기법, 대괄호 표기법을 사용한다.
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = {
[fruit] : 5 // 변수 fruit에서 프로퍼티 이름을 동적으로 받아 옵니다.
};
alert(bag.apple); // fruit에 "apple"이 할당되었다면, 5가 출력됩니다.
fruit
에서 가져오겠다는 의미이다. function makeUser(name, age){
return{
name : name,
age : age,
}
}
let user = makeUser("SWP", 33);
alert(user.name);
function makeUser(name, age){
return{
name,
age,
}
}
let user = makeUser("SWP", 33);
alert(user.name);
undefined
를 반환한다. let user = {};
alert(user.noSuchProperty === undefined);
// 반환되는 값 true는 프로퍼티가 '존재하지 않음'을 의미한다.
undefined
와 비교하는 것 이외에도 연산자 in을 사용하면 프로퍼티 존재 여부를 확인할 수 있다. "key" in object
let user = {name : "SWP", age : 33};
alert("age" in user); // user.age가 존재하므로 true가 출력된다.
alert("year" in user); // user.year는 존재하지 않기 때문에 false가 출력된다.
in
왼쪽에는 반드시 프로퍼티 이름이 와야한다.undefined
인 value가 존재하는 경우와, 아무값도 존재하지 않는 경우가 헷갈릴 수 있다.
let user = {
name : "John"
};
C에서 배웠던 call by value와 call by reference를 떠올리면 이해하기 쉽다.
let user = { name : "John" };
let admin = user; // 참조값을 복사함
user가 가진 참조값(주소값)을 admin도 가지게 되고,
user와 admin 둘 다 name을 참조할 수 있다.
admin.name = "춘식";
alert(user.name);
복사된 admin의 참조값에 의해서 '춘식'이로 변경하고
원본 user의 참조값으로 변경된 사항을 확인해보면,
'John'이 이닌 '춘식'이 출력된다.
ES6에 적용된 문법 중 하나
let func = (arg1, arg2, ... , argN) => expression
let sum = function(a, b){
...
return a + b;
}
↓ ↓ ↓ 아래의 화살표 함수로 축약할 수 있다.
let sum = (a, b) => {
...
return a + b
}
↓ ↓ ↓ 함수의 정의가 단순한 경우,
let sum = (a, b) => a + b;
alert(sum(1, 2)); // 3
(a,b) => a+b;
는 실행되는 순간 표현식 a+b
를 평가하고, 그 결과를 반환한다.인수(argument)가 한 개인 경우 괄호를 생략할 수 있다.
const dbl = num => num * 2;
인수가 없는 경우
const nothing = () => alert("없음");
화살표 함수 :
1. function 키워드를 제거하고,
2. 함수의 이름을 변수처럼 사용할 수 있다. (대입)
let age = prompt("나이를 입력하세요 : ", 20); // 20 : 디폴트값
let welcome = (age < 19)?
function(){ alert("미성년자는 구매할 수 없습니다."); } :
function(){ alert("성인입니다."); }
↓ ↓ ↓ 화살표 함수로 바꾸어보자.
let welcome = (age < 19)?
() => { alert("미성년자는 구매할 수 없습니다.") } :
() => { alert("성인입니다..") }