띠용 알게된 것 >> array

let myArr = [];

myArr.push(3);  

// 출력 값은 '1' 
// typeof 는 number 가 나온다. 
// 나는 새롭게 적용된 배열의 데이터 타입이 나올 것이라 기대했다.

myArr;

// 하지만 push();는 'number' 타입이고
// push(); 해준 뒤, 다시 변수 myArr;를 호출하면 배열이 나오더라.


The push() method adds one or more elements to the end of an array and returns the new length of the array.
:: 배열의 '길이'를 반환

마찬가지로 unshift(); 도 길이를 반환
하지만 pop(); 는 요소를 반환, 즉 배열을 반환

let myArr = [];
myArr = myArr.push(3);

/// 출력 값은 오류

먼저 떠올린 오류가 난 이유 : myArr는 'object(=array)' / myArr.push(3)은 'number'라서 데이터값이 서로 맞지않기 때문이라 생각했다. 그치만 아니다. let 변수는 숫자, 배열, 함수 등 다 재할당이 가능하기 때문이다.

-- 하지만 정확한 이유는 js가 하는 일의 순서를 보면 답이 있다.
1) myArr 가 처음엔 배열이었고
2) myArr = myArr.push(3);되면서 숫자가 된다.
3) 숫자에는 push라는 메소드가 없기 때문에
오류가 발생했다.

오늘의 지혜 > mdn 공식문서를 꼼꼼히 읽어보기 ! (무엇을 반환하는지)

좋은 웹페이지 즐겨찾기