배열 내장 함수(배열 조작 메서드)를 공부하다가 .length
만 뒤에 ()
가 없는 것이 궁금했다.
보기에는 배열의 크기를 리턴해주는 함수 같은데, ()
가 없다. (사실 배열뿐 아니라 다양한 데이터 타입에서 사용 가능하다.)
기억해 보니 공부하는 동안 .length
와 비슷한 함수들을 이용했었다.
함수를 호출하기 위해서는 ()
가 있어야 하고 ()
가 없다면 호출이 아닌 참조만 된다고 알고 있었는데 그동안 왜 리턴값을 받을 수 있었을까?
.length
는 함수(메서드)가 아닌 프로퍼티였다.
그렇기 때문에 ()
가 있으면 안 된다.
왜냐하면 숫자가 저장되는 프로퍼티(변수)이기 때문이다.
내 생각이지만 배열, 변수 등이 선언 및 할당되면, JS에는 내부적으로 몇 가지 정보가 함께 기록되는 것 같다.
그중 .length
에 그 크기 정보가 숫자로 저장되어 있고 그것을 이용하는 것 같다.
let krName = '자바스크립트';
console.log(krName.length); // 6출력.
변수에서도 작동한다는 것은 변수도 length 프로퍼티를 가지는 것이고, 그렇다면 JS의 대부분은 객체처럼 작동하는 것인가?
나중에 좀 더 성장하게 되면 자연스레 알 수 있겠죠?
성장했습니다. 정답은 여기.
// log는 console객체의 메소드.
// abs는 Math객체의 메소드.
console.log(Math.abs(-1996));
// length는 프로퍼티.
let krName = '자바스크립트';
console.log(krName.length); // 6출력.
// PI는 Math객체의 프로퍼티.
Math.PI;