TypeError: num_list.length is not a function
에러에서 내가 모르고 있었던 것(내가 뭘 모르고 있는걸까?😥😥)
자바스크립트에서 '배열' 은 '객체 기반' 임.
그래서, arr=[1,2,3] 을 선언하면, 실제로는
arr = {
// 지금 이 순간 적는 것 👇👇
'0' : 1,
'1' : 2,
'3' : 3,
// 배열을 적기만 해도 자동적으로 생겨나는 부분 👇👇
length : 3,
pop : function(){ pop 메서드 기능 },
등등
}
CF. 다만, 실제로, 정말, 배열이 이렇게 단순하게 되어있지는 않고, 더 복잡하다고 함.
그러면, 내가 헷갈렸던 건,
'배열의 길이를 구한다 = 메소드' 라고 생각해서 'length()' 라고 했는데, 실제로 자바스크립트 상에서는 'length 는 객체의 속성(key)' 이었던 거지. 그래서 '길이를 가져오고 싶으면, 해당 속성의 값을 호출' 하면 되었던 거야.
결론
1) 자바스크립트는 '배열' 을 '객체 기반' 으로 표현한다.
2) '배열의 길이' 는 length 라는 '속성에 담겨져 있는 값' 을 불러오면 된다. 그래서, 'length()' 이렇게 함수 실행을 하는 방식으로 시도하면, 'length is not a function' 에러가 발생한다.