
+를 사용할 때 피연산자 중 하나가 문자열이면 다른 하나도 문자열로 변환한다.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 값 이외의 다른값들과는 비교가 불가능.