자바스크립트 완벽가이드 4장에 해당하는 부분이고, 읽으면서 자바스크립트에 대해 새롭게 알게된 부분만 정리한 내용입니다.
표현식이란
→ 어떤 값으로 평가(evaluate)되는 구절
JS는 프로그램에 있는 식별자를 조회할때, 그 값이 존재하지 않는경우, 조회하려는 시도가 들어오면 ReferenceError
를 발생시킨다.
프로퍼티 접근 문법으로 아래와 같은 것들이 있다.
expression . identifiler
expression [ expression ]
어떠한 스타일의 프로퍼티 접근 표현식을 쓰든 .이나 [ 앞에 있는 표현식을 첫 번째로 평가한다.
만약 그 값이
null
또는undefined
이면 이 둘은 프로퍼티를 가질 수 없는 값이므로TypeError
를 발생시킨다.
호출 표현식에서 맨 앞에 있는 표현식이 프로퍼티 접근 표현식(obj
)이라면
obj.func()
이 호출은 메서드 호출이라고 하며, 메서드 호출에서 프로퍼티 접근 대상인 객체 또는 배열은 함수 바디가 실행되는 동안 this 키워드의 값이 된다.
즉 여기서 this는 메서드를 호출한 객체를 가리킨다는 의미
단순히 ()
대신 ?.()
를 통해 함수를 호출할 수 있다. 이를 조건부 호출이라고 말한다.
function square(x, log) {
if(log) {
log(x);
}
return x * x;
}
⬇️
function square(x, log) {
log?.(x);
return x * x;
}
위 두 코드의 동작방식은 완전히 같지는 않다. 왜냐하면
?.()
는 왼쪽에 있는 것이null
이나undefined
인지만 체크하며, 실제로 함수인지까지 체크하지는 않기 때문이다.
→ 즉, 함수가 호출되어 예외가 발생할 수 있음(숫자 2개를 인수로 전달하여 호출한 경우)