NaN
을 반환e.g. +
, -
, *
, /
, %
e.g. ++
, --
, +
, -
let x = 3;
let result;
result = x++;
console.log(result, x); // 3 4
result = ++x;
console.log(result, x); // 5 5
result = x--;
console.log(result, x); // 5 4
result = --x;
console.log(result, x); // 3 3
+
, -
연산자를 사용하면 숫자 타입으로 변환된 값을 반환함-
연산자는 피연산자의 부호를 반전한 값을 반환함let x = '1';
console.log(+x); // 1
console.log(-x); // -1
console.log(x); // '1'
x = true;
console.log(+x); // 1
console.log(-x); // -1
console.log(x); // true
x = 'str';
console.log(+x); // NaN
console.log(-x); // NaN
console.log(x); // 'str'
+
연산자는 하나 이상의 피연산자가 문자열일 때 문자열 연결 연산자로 동작함console.log(1 + 2 + '3'); // 33
console.log('1' + 2 + 3); // 123
console.log(true + 1 + '2'); // 22
e.g. =
, +=
, -=
, *=
, /=
, %=
let str = 'My name is ';
str += 'J';
console.log(str); // My name is J
cf) 할당문은 표현식인 문임 -> 할당문을 다른 변수에 할당 가능함
let a, b, c;
a = b = c = 0;
console.log(a, b, c); // 0 0 0
cf) 이때의 값은 암묵적 타입 변환을 거친 값임
e.g. ==
, !=
console.log(1 == true); // true
e.g. ===
, !==
console.log(1 === true); // false
cf) NaN
여부는 Number.isNaN()
또는 Object.is()
를 통해 확인해야 함
console.log(NaN === NaN); // false
console.log(Number.isNaN(NaN)); // true
console.log(Object.is(NaN, 1 * 'str')); // true
e.g. >
, <
, >=
, <=
console.log(1 < false); // false
조건식 ? 조건식이 truthy할 때 반환할 값 : 조건식이 falsy할 때 반환할 값
e.g. ||
, &&
, !
let x, y, z;
const result = ((x = 1), (y = 2), (z = 3));
console.log(x, y, z); // 1 2 3
console.log(result); // 3
cf) 8개의 데이터 타입과 정확히 일치하진 않음
console.log(typeof 100n); // bigint
console.log(typeof null); // object
console.log(2 ** 0); // 1
console.log(2 ** -1); // 0.5