• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

함수호출

21.08.16 13:16 작성 조회수 135

0

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

답변 1

답변을 작성해보세요.

0

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

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

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

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