다른 프로그래밍 언어와 같은 부분이 많아 큰 어려움은 없었지만 타입 변환 등 자바스크립트만의 특성으로 잘 읽어봐야 할 부분이 많았다. 특히 typeof
나 instanceof
부분은 JavaScript를 더 이해하는데 도움이 되었다.
Chapter 4 표현식과 연산자 Expressions and Operators
표현식 : 값을 구하기 위한 표현 방법
연산자 : 표현식의 구성요소 (값을 반환하거나 연산함)
4.1 Primary Expressions
상수, 문자열 값, 키워드, 변수 레퍼런스 (eg. true, false, undefined)
4.2 객체, 배열 생성자 Object and Array Initializers
- 객체 : {}
- 배열 : []
4.3 함수 정의 표현식
var square = function(x) { return x * x; };
4.4 프로퍼티 접근 표현식
expression.identifier // 식별자가 이렇게 써도 문법에 위배되지 않을 때 사용 가능
expression[expression] // 배열일 때 특히
4.5 구동 표현식 Invocation Expressions
square(10)
Math.min(x, y, z)
foos.sort()
- 아규먼트의 연산을 먼저 한 후 함수가 실행됨 (in common sense)
- 실행 가능 객체가 아니라면
TypeError
return
- 함수(OO에선 메서드)가 실행될 때
this
4.6 객체 생성 표현식
var o = new Object()
var d = new Date()
- 초기화 할 때 생성되는
this
4.7 연산자 미리보기
- p.62 표 참조. 다른 프로그래밍 언어랑 크게 다른게 없음.
typeof
,instanceof
- 문자열 합칠 때와 숫자 계산할 때 둘 다
+
사용 - 형변환이 자유롭게 발생하므로 유의
"3" * "5" // => 15
4.8 산술 표현식 Arithmetic Expressions
- *, /, %, +, –
NaN
-
- 연산자 : 값을 합칠 때 해당 값이 객체이면 3.8.3에서 본 것처럼
toString()
또는valueOf()
로 형변환 시도
- 연산자 : 값을 합칠 때 해당 값이 객체이면 3.8.3에서 본 것처럼
- 비트연산자 : &, |, ^, ~, <<, >>, >>>
4.9 관계 표현식 Relational Expressions
-
==
와===
: 타입 변환 허용 var point = { x : 10, y: 20 };“x” in point // => true
“s” in point // => false
var data = [3, 2, 1];
“0” in data // => true
// 배열은 값이 들어 있는지 확인하는 것이 아니라 해당 index에 값이 있는지 확인해줌
-
instanceof
: 어떤 클래스인지 확인할 때. 상속되는 모든 클래스에 대해true
4.10 논리 표현식
- &&, ||, !
4.11 배정 표현식 Assignment Expressions
- =, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, |=, ^=
4.12 평가 표현식 Evaluation Expressions
eval()
: 하나의 아규먼트를 js 코드처럼 처리해줌.- ES5에서 global eval
- IE 전용
execScript()
4.13 그 외 표현식
- 3항 연산자(?:) :
var age = birthyear > 2000 ? "yong" : "old";
typeof
: p.82 표 참조- “undefined”, “object”, “boolean”, “number”, “string”, “function”, “object”, “<구현한 객체>”
null
은"object"
반환- 호출 가능한 객체 callable object 가 정확하게 함수function는 아님. 하지만 typeof에서는 호출 가능한 객체에 대해 “function”을 반환
delete
- ES5 strict에선 못지울 것 지우면
SyntaxError
- garbage collection이 있으므로 일일이 지워줄 필요는 없음
- ES5 strict에선 못지울 것 지우면
void
: 프로토콜에서 사용하는데 (주. 쓰지말자.),
:a=1, b=2, c=3;