TIR: 완벽가이드 1. 코어자바스크립트(2) 표현식과 연산자 - 220616

Lumpen·2022년 6월 16일
0

TIR

목록 보기
7/40

표현식

자바스크립트 인터프리터가 값으로 평가하는 구문

명시적으로 초기화 하지 않은 값을 참조하려하면
undefined
ES5 엄격 모드에서는 참조 에러가 발생

객체나 배열 표현식은 객체 리터럴, 배열 리터럴로 표현되지만 기본 표현식이 아니다
프로퍼티와 원소의 값을 지정하는 하위 표현식을 포함할 수 있기 때문

호출 표현식 ()

호출하는 값이 호출할 수 있는 객체가 아닐 경우
type error 발생
모든 함수는 호출할 수 있다
함수가 아닌 호스트 객체도 호출이 가능한 경우가 있다
호출 표현식이 평가될 때
함수 표현식이 먼저 평가되고, 호출 인자 표현식이 순서대로 인자 값으로 평가된다
후에 인자 값이 지정했던 인자 이름에 할당되고, 마지막으로 함수 본문이 실행된다
return문을 사용하면 그 값이 호출 표현식의 값이 되고
사용하지 않는다면 undefined가 된다

메서드 호출이 아닌 호출 표현식은 보통 전역 객체를 this키워드의 값으로 사용한다..?
ES5 엄격 모드에서 사용시 전역 객체 대신 undefined가 this의 값이 된다

객체 생성 표현식

새 객체를 생성하고, 생성자 함수를 호출해 객체에 속한 프로퍼티들을 초기화 한다
객체 생성 표현식은 new 키워드가 붙고, 호출 표현식과 유사하다
전달할 인자가 없으면 '()' 생략 가능

new Obj()
new Obj 

객체 생성 표현식이 평가될 때 인터프리터가 먼저 새로운 빈 객체를 생성하는데 객체 초기자 '{}'에 의해 생성되는 객체와 동일하다
다음으로 주어진 인자들과 함께 생성자를 호출
이 때 생성된 빈 객체를 this 키워드의 값으로 생성하여 전달한다
생성자 함수는 해당 this를 사용해 프로퍼티들을 초기화한다
일반적으로 생성자 함수는 값을 반환하지 않는다
객체 생성 표현식의 값은 생성, 초기화된 객체
생성자가 특정 객체 값을 반환할 경우엔 이 값이 객체 생성 표현식의 값이 되고, 생성자를 통해 생성된 객체는 버려진다

연산자 부수효과

증가 연산자 ++, 감소 연산자 -- 는 실행되면서
기존의 값을 변경하는 묵시적 할당이 이루어진다
delete 연산자의 경우 프로퍼티를 삭제 시 해당 프로퍼티에 undefined를 할당하는 것과 유사하다 (같진 않다)

자바스크립트는 모든 숫자를 부동소수점으로 표현하기 때문에 연산 결과 또한 부동소수점 숫자 값이 된다
5/2가 2가 아닌 2.5가 되는 식

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글