-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
length 질문
20.09.25 18:00 작성 조회수 172
0
안녕하세요! 좋은 강의 감사합니다.
다름아니라 강의중에 궁금한 질문이 있는데요,
왜 length에는 () 괄호가 붙지 않나요? length도 toString()와 같은 프로퍼티 아닌가요?
답변을 작성해보세요.
1
0
이고은
질문자2020.09.25
빠르고 자세한 답변 감사합니다. 그럼 질문 몇가지가 또 있는데요!
1) 프로퍼티(값설정)와 함수(함수 안에있는 코드에 대한 값반환)의 차이점은 사용용도가 다르다고 이해하면 될까요?
2) 프로퍼티 값으로 자바스크립트에서 제공하는 타입이 다 가능하다고 말씀해주셧는데 그럼 함수도 프로퍼티 값으로 설정할 수 있나요?
3) 만약 1번 질문이 맞다면, 혹시 프로퍼티를 함수 역할로, 함수를 프로퍼티 역할로 사용가능한가요?
0
김영보
지식공유자2020.09.25
좋은 질문입니다^^
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);
답변 3