(이전에 내용은 과감히 패스했다)
+연산자는 숫자의 덧셈, 문자열 접합 두가지 목적으로 오버로드 된다. 자바스크립트 엔진은 연산자를 보고 어떤 연산을 해야 할지 어떻게 알까?
//숫자의 덧셈
let a = 4
let b = 38
a+b // 42
//문자의 접합
let c = "4"
let d = "38"
c+d // "438"
let a = [1,2]
let b = [3,4]
a+b // '1,23,4'
ES5에 의하면
+알고리즘(피연산자가 객체값일 경우)한쪽 피연 산자가 문자열이거나 다른 과정을 통해 문자열 표현형으로 나타낼 수 있으면 문자열 붙이기를 한다.
(+)이외에 -,*,/ 는 문자열 변환 기능이 없으므로 모두 숫자로 변환하여 계산한다.
OR,AND 연산자
자바스크립트에서의 && || 연산자는 true/false를 반홚나는 연산자가 아니다 값을 Boolean()으로 강제변환하여 연산한뒤 값을 반환한다.
다음 코드를 보자
let a = 42
let b = "abc"
let c = null
a||b // 42
a&&b // 'abc'
c||b //'abc'
c&&b // null
첫번째 두번째 피연산자를 toBoolean으로 변환하여 평가한다.
and는 2개의 값이 모두 true이어야 true을 반환한다
or는 둘중 하나라도 값이 true면 true를 반환한다.
햇갈린다면 다음과같이써보자