• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

length 질문

20.09.25 18:00 작성 조회수 172

0

안녕하세요! 좋은 강의 감사합니다.

다름아니라 강의중에 궁금한 질문이 있는데요,

왜 length에는 () 괄호가 붙지 않나요? length도 toString()와 같은 프로퍼티 아닌가요?

답변 3

·

답변을 작성해보세요.

1

질문의 답을 논리적으로 설명하려면 사전 설명이 필요합니다. 다행인 것은 질문 내용을 단계별로 강좌에서 다루니 조금 더 듣기 바랍니다.

0

이고은님의 프로필

이고은

질문자

2020.09.25

빠르고 자세한 답변 감사합니다. 그럼 질문 몇가지가 또 있는데요!

1) 프로퍼티(값설정)와 함수(함수 안에있는 코드에 대한 값반환)의 차이점은 사용용도가 다르다고 이해하면 될까요?

2) 프로퍼티 값으로 자바스크립트에서 제공하는 타입이 다 가능하다고 말씀해주셧는데 그럼 함수도 프로퍼티 값으로 설정할 수 있나요?

3) 만약 1번 질문이 맞다면, 혹시 프로퍼티를 함수 역할로, 함수를 프로퍼티 역할로 사용가능한가요?

0

좋은 질문입니다^^
length도 toString()와 같은 프로퍼티 아닌가요? 
==> length를 프로퍼티라고 하며, toString()을 함수(메소드)라고 합니다.
즉, 소괄호()가 있으면 함수(메소드)라고 합니다.
===========

자바스크립트에 값을 구하는 방법으로 크게 프로퍼티와 함수(메소드)가 있습니다.
1. 함수(메소드)는 호출할 때마다 함수 안에 작성된 코드로 값을 구합니다.
2. 프로퍼티는 값을 설정하는데 사용합니다.
- 프로퍼티는 크게 개발자가 선언하는 프로퍼티와 자바스크립트 엔진이 설정하는 프로퍼티로 나눌 수 있습니다.
length는 엔진이 설정하는 프로퍼티이며, 엔진이 값을 자동으로 변경합니다.
예를 들어 배열 [1, 2, 3]은 length 프로퍼티 값이 3입니다.
이것을 [1, 2, 3, 4]로 변경하면, 엔진이 자동으로 length 프로퍼티 값을 4로 변경합니다.
이처럼 프로퍼티로 사용하는 것은 소괄호()를 사용하지 않습니다.

한편 [1, 2, 3]을 다양한 형태로 변경할 수 있습니다. 다양한 변경은 함수에서 파라미터로 받아 처리하면 되므로 가변성을 확보할 수 있습니다. 이때는 함수를 사용합니다.
function change(param, index){
  var value = param;
  value[index] += 20;
  return value ;
};
change([1, 2, 3, 4], 2);
change([1, 2], 1);
change([1, 2, 3, 4, 5, 6], 3);