const data = {};
console.log(data.user.name); // 타입에러
console.log(data.user?.name);
// ?. 연산자 앞에 위치한 대상이 null 또는 undefined인 경우
// 더이상 하위객체로 접근하지 않고 undefined를 반환한다.
// 에러는 발생 x
// for - 구구단 출력
const n = 2;
for(let i = 1; i < 10; i++) {
console.log(n + ' * ' + i + ' = ' + n*i);
}
// 2 * 1 = 2
// 2 * 2 = 4 ...
// for of
// 반복가능한 객체(배열, 문자열 등)에 사용할 수 있는 반복문
// 주어진 객체를 차례대로 순회한다.
const arr = [1, 2, 3, 4, 5];
for (const i of arr) {
console.log(i); // 1 2 3 4 5
}
// while
let i = 0;
while (i < 5) {
console.log(i);
i++;
} // 0 1 2 3 4
// do while
// (while문과 차이)
// 조건의 참,거짓 여부와 관계없이 무조건 한번은 실행된다.
let i = 0;
do {
console.log(i);
i++;
} while (i < 5);
// 0 1 2 3 4
3. 함수
// 두개의 인자가 있는 함수에서 인자를 하나만 전달한다면 ?
function sum(a, b) {
return a + b;
}
sum(10); // NaN
// 인자를 하나만 전달한다면
// 하나의 인자는 undefined가 된다. ( 값 없음 )
// 숫자형과 undefined 연산 결과 => NaN (Not-A-Number)
const sum = function(a, b) {
return a + b;
}
console.log(sum(1, 2));
// 화살표 함수
const add = (a, b) => a + b;
// 인자가 없는 화살표 함수
const greeting = () => 'Hello';
// 중괄호 열고 함수를 작성 시 return 명령어 사용하기
const sum = (a, b) => {
return a + b;
}
// number
const num = 1;
// bigInt
2^53-1 보다 크거나 2^53-1보다 작은 숫자
(number data type으로 표현이 불가능한 수)
const big_num = 123123123123123123123n;
// null : 값없음
// undefined : 값 지정 X
// Symbol : 객체의 고유한 식별자 (unique identifier)를 만들기 위해 사용
const id = Symbol();
console.log(typeof id); // 'symbol'
// Symbol()의 인자로 이름 지정 가능
const id = Symbol('id');
console.log(id); // Symbol(id)
3. 참조 데이터 타입 (Reference Types)
// array, object 원시 데이터 타입이 할당될 때 변수에 값 자체가 담기는 것과 달리 보관하는 주소(Reference)가 담기는 데이터 타입이다.
// 배열
const arr = [1, 2, 3, 4];
// 객체
각 요소는 key: '값'으로 구성된다. (키,값 == property)
const user = {
id: 'ayoung',
pw: '1234',
subjects: ['en', 'ko']
};
// 객체 접근
user.id
user['id']
객체의 키는 문자 또는 심벌 데이터 타입이여야한다.
// Set 배열과 같은 데이터 집합, 배열과 달리 중복을 허용하지 않는다.
const set = new Set();
set.add(1);
set.add(2);
set.add(1);
// Set(2) {1, 2}
// 셋에 이미 1이 들어있어서 중복허용 x
const arr = [1, 2, 1, 3, 4, 2, 1, 5];
const new_arr = new Set(arr);
console.log(new_arr);
// Set(5) {1, 2, 3, 4, 5}
const a = null;
const b = undefined;
const c = 'hello';
console.log(a ?? b ?? c); // hello
// 전개 구문
// 반복이 가능한 iterable 객체에 적용할 수 있는 문법으로 배열이나 객체, 문자열의 요소를 각각 꺼내서 전개한다.
const hello = 'Hello';
const world = 'World!';
console.log(...hello, ...world); // H e l l o W o r l d !
const arr = [10, 20];
function sum(a, b) {
return a + b;
}
console.log(sum(...arr)); // 30
// sum(arr[0], arr[1]);
// 2개의 인자를 필요로 하는 함수 sum()을 호출할 때
// 배열의 값을 각각 지정하지 않고 전개 구문을 사용해 인자를 전달한다.
// 전개구문을 사용해 배열 2개를 합쳐 새로운 배열 만들기
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const newArr = [...arr1, ...arr2];
console.log(newArr);