이항 연산자 +를 사용할 때 피연산자 중 하나가 문자열이면 다른 하나도 문자열로 변환된다.
alert('1'+2); //'12'
alert(2+2+'1'); //'41'
+가 아닌 다른 산술 연산자는 오직 숫자형의 피연산자만 다루고, 피연산자가 숫자형이 아닌 경우에 그 형을 숫자형으로 바꾼다.
+는 이항 연산자 뿐만 아니라 단항 연산자로도 사용할 수 있다.
숫자에 단항 덧셈 연산자+를 붙이면 아무런 동작도 하지 않는다.
let x=-2;
alert(+x);//-2
그러나 피연산자가 숫자가 아닌 경우에는 숫자형으로의 변환이 일어난다.
alert(+true);//1
alert(+"");//0
이처럼 단항 덧셈 연산자는 Number함수와 동일한 일을 한다.
let apples="2";
let oranges="3";
alert(apples+oranges);//23(이항 덧셈 연산자는 문자열을 연결)
alert( +apples + +oranges);//5(두 피연산자가 숫자형으로 변환된 뒤 덧셈 연산자가 적용된다.)
동일한 기호의 단항 연산자는 이항 연산자보다 우선순위가 더 높다.
=는 우선순위가 낮아서 자바스크립트에서는 아래와 같이 할당 연산자를 사용하는 경우가 있기 때문에 동작 원리를 이해할 수 있어야 한다.
let a=1;
let b=2;
let c=3-(a=b+1);
alert(a);//3
alert(c);//0