+
를 사용할 때 피연산자 중 하나가 문자열이면 다른 하나도 문자열로 변환한다.alert('1'+2); // "12"
alert(2+'1'); // "21"
-
, /
연산자는 어떠할까?alert(6-'2'); // 4, '2'를 숫자로 바꾼 후 연산 진행
alert('6'/'2'); // 3, 두 피연산자가 숫자로 바뀐 후 연산 진행
alert( +true); //1
alert(+""); //0
let apples = "2";
let oranges = "3";
// 이항 덧셈 연산자가 적용되기 전에, 두 피연산자는 숫자형으로 변화.
alert( +apples + +oranges ); // 5
하나의 표현식에 둘 이상의 연산자가 있는경우, 실행 순서는 연산자의 우선순위에 따라 결정이 된다.
참고 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
++
는 변수를 1 증가 시킨다
let counter = 2;
counter ++;
alert(counter); //3
--
는 변수를 1 감소시킨다
let counter = 2;
counter --;
alert(counter); //1
++
와 --
연산자는 변수 앞이나 뒤에 올 수 있다.
counter++
와 같이 피연산자 뒤에 올 때는, 후위형.++counter
와 같이 피연산자 앞에 올 때는, 전위형 이라고 부른다.후위형과 전위형은 피연산자인 counter
를 1만큼 증가 시켜준다는 점에서 동일하다.
하지만 두 형의 차이는 ++/--
의 반환 값을 사용할 때 드러난다.
let counter = 1;
alert( 2 * ++counter ); // 4
let counter = 1;
alert( 2 * counter++ ); // 2
쉼표 연산자 ,
는 여러 표현식을 코드 한 줄에서 평가할 수 있게 해준다. 이때 표현식 각각이 모두 평가되지만, 마지막 표현식의 평가 결과만 반환된다.
let a = (1 + 2, 3 + 4);
alert( a ); // 7 (3 + 4의 결과)
비교하려는 값의 자료형이 다르면 자바스크립트는 이 값들을 숫자형으로 바꾼다.
alert('2'>1); // true
alert('01'==1) // true
alert(false==0) // true
===
를 사용하며 자료형의 동등 여부까지 검사하기 때문에 피연산자들의 형이 다를경우 즉시 false
를 반환한다. 불일치 연산자는 !==
사용
alert(0===false); // false
두 값의 자료형이 다르기 때문에 ===
사용시 거짓이 반환. 하지만 ==
를 사용하여 비교시에는 true과 반환된다.
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true
==
동등 연산자는 기타 비교 연산자들과 동작 방식이 다르다. 기타 비교 연산자들은 null을 0
으로 변환하여 비교를 하지만 동등연산자 ==
는 피연산자가 undefined
나 null
일때 형 변환을 하지 않는다.
null >= 0이 참을 반환하는 이유는 (기타 비교 연산자의 동작 원리에 따라) null이 숫자형으로 변환돼 0이 되기 때문.
동등연산자는 undefined
와 null
을 비교하는 경우에만 true
를 반환하고 그 이외의 경우에는 무조건 false
를 반환한다. undefined
는 null
값 이외의 다른값들과는 비교가 불가능.