JavaScript는 런타임에 타입이 결정되는 동적 언어이다.
따라서 매번 타입을 작성하지 않아도 된다는 장점이 있지만, 런타임에 타입이 예측이 어려울 때가 있어서 에러의 원인이 될 때가 많다.
이를 대처하기 위해 JavaScript의 모든 특성을 외우는 것보다, 올바른 코딩 습관을 갖도록 노력해야 한다.
- 최대한 같은 타입끼리 연산을 한다.
- 엄격한 동치 연산('===')을 사용한다.
// string + number
console.log('1' + 1); // '11', type: string
// number + string
console.log(1 + '1'); // '11', type: string
// numStr - number
console.log('11' - 1); // 10, type: number
// number - numStr
console.log(11 - '1'); // 10, type: number
// boolean + number
console.log(true + 1); // 2, type: number
// number + boolean
console.log(1 + true); // 2, type: number
// boolean + numStr
console.log(true + '1'); // 'true1', type: string
// numStr + boolean
console.log('1' + true); // '1true', type: string
이러한 JavaScript의 특성을 모아둔 github 저장소가 있다.
denysdovhan님의 wtfjs