인프런 커뮤니티 질문&답변

군밤고굼님의 프로필 이미지
군밤고굼

작성한 질문수

자바스크립트 제대로 배워볼래?

String 내장 함수

함수호출

작성

·

187

0

안녕하세요 강사님.
함수호출관련하여 문의드립니다. 제가 아직 초보라서요..
str.length의 경우 str객체에 담긴 길이를 구하는건데요
str.toUpperCase()의 경우 대문자로 바꾸는거구요.
어떤 함수는 length처럼 뒤에 ()없이 호출하고, 어떤함수는 toUpperCase()처럼 뒤에 ()를 붙여야 하구요.
도대체 어떤 차이인걸까요?
실제로 function xxx(){~~~} 이렇게 작성한 함수를 호출할때
어디서는 xxx로 호출하고 어디서는 xxx()로 호출하는것 같아서요.. 너무 헷갈립니다 ㅠ

답변 1

0

개발자의 품격님의 프로필 이미지
개발자의 품격
지식공유자

length는 String 객체 내에 정의된(구현된) 하나의 프로퍼티 값입니다. 문자열을 변수에 할당하는 순간 이미 length하는 프로퍼티에 길이 값이 들어가 있게 됩니다. length는 함수가 아니라 프로퍼티이기 때문에 호출해서 사용할때 함수를 호출하는것과 다르게 () 가 붙지 않습니다.

toUpperCase()는 String 객체 내에 정의된 함수입니다. 그렇기 때문에 함수를 호출하는 방식으로 () 를 사용해서 호출하는 것입니다.

감안히 생각해 보면 toUpperCase()는 사용자가 사용할지 안할지 모르는 것이고, 호출되는 시점을 기준으로만 계산이 되면 되는 것이지요.

length의 경우는 이미 변수에 문자열을 할당 할 때 알수 있는 값이기 때문에 함수가 아니라 프로퍼티로 바로 알수 있게 자바스크립트가 구현을 한것이라고 생각하면 됩니다.

군밤고굼님의 프로필 이미지
군밤고굼

작성한 질문수

질문하기