객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성된다.
프로퍼티 접근법
마침표 표기법(.)
var person = {
name: 'Jeon',
};
person.name = 'Jeon2';
대괄호 표기법([...])
person['name'] = 'Jeon3';
// 대괄호 표기법은 내부에 지정하는 프로퍼티 키는 반드시 따옴표로 감싼 문자열 이어야한다.
// 그렇지 않은경우, 프로퍼티가 아닌 식별자로 인식한다.
// 객체에 존재하지 않는 프로퍼티에 접근하면 undefined를 반환한다. ReferenceError 발생하지 않음!
console.log(person['age']);
// 프로퍼티 삭제
delete person.name;
// 존재하지 않는 프로퍼티를 삭제하면 아무런 에러 없이 무시된다!
delete person.age;
var count = 0;
outer : for(;;) {
for(;;) {
count ++;
if( count ===3) break outer;
}
}
동적 타입 언어이다.
자바스크립트의 변순은 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라 한다.
언어의 유연성은 높지만 신회성은 떨어진다.
브라우저 환경에는 name이란 전역변수(전역객체 window의 프로퍼티)가 암묵적으로 존재한다.
전역 변수 name은 창(window)의 이름을 가리키며, 기본값은 빈 문자열이다('');
'use strict'; // 스트릭트 모드일 경우, 존재하지 않음.
Node.js 환경에도 존재하지않음.
var x=1, y=2;
// ES5
var obj = {
x: x;
y: y;
}
//ES6
const obj = {x, y};
ES6 문법에서는 메서드를 정의할 때 function 키워드를 생략할 수 있다.
단! 두 메서드가 완전 동일하게 동작하진 않는다!
ES5 문법
var obj = {
name: 'Jeon',
sayHi: function() {
console.log('Hi!' + this.name);
}
}
obj.sayHi(); // Hi! Jeon
ES6 문법
const obj = {
name: 'Jeon',
sayHi() {
console.log('Hi!' + this.name);
}
}
대상을 일반화 하는 것
추상화 할 수록 객체의 디테일은 사라지고 공통된 특징만 남는다.
(장치를) 작동시키다.
반복문
forEach - 배열을 순회할 때 사용
for...in - 객체의 프로퍼티를 열거할 때 사용
for...of - 이터러블을 순회할 때 사용