console.log(parseInt(" ")); // NaN
console.log(parseInt("")); // NaN
console.log(parseInt("10abc2")); // 10
console.log(Number(true)) // 1
console.log(Number(false)) // 0
console.log(Number("10abc2")) // NaN
console.log(Number("")) // 0
console.log(Number(" ")) // 0
Math.min([1, 3, 4, 5, 11]) // 작동 x
Math.min(...[1, 3, 4, 5, 11]) // '...' 전개 구문을 사용하여 활용
let values = [1, 2, 3, 4, 5]
let values2 = [6, 7, 8, 11, 10]
Math.max(...values) // 5
Math.max(...values, ...values2) // 11
9007199254740991 + 2
// 9007199254740992 // 오류
9007199254740991n + 2n
// 9007199254740993n // O
BigInt(9007199254740991) + BigInt(2)
// 9007199254740993n // O
10.toString() // 10.까지 소숫점으로 인식 // errer
(10).toString() // "10"
console.log(typeof (+'2')) // Number
논리연산자(|| , &&)를 사용하여 좌측식의 결과에 따라 우측식의 실행 여부가 달라지는 동작을 단락 회로 평가라 한다.
let username = "";
username = username || "무명" // 좌측식의 결과가 false이기에 우측식을 실행함
console.log(username); // "무명"
let username2 = "정승규";
username2 = username2 || "무명" // 좌측식의 결과가 true이기에 우측식을 실행 안함
console.log(username2); // "정승규"
nullish 연산자 : 식에 null값이 아닌 값을 출력하는 연산자로 단락회로평가와 유사하다.
let a = null; let b = 10; let c = null; console.log(a ?? b ?? c) // 10
let height = 0;
console.log(height || 100) // 100
console.log(height ?? 100) // 0
let height2;
console.log(height2 || 100) // 100
console.log(height2 ?? 100) // 100
let height3 = "";
console.log(height3 || 'hello') // hello
console.log(height3 ?? 'world') // 공백
- 일단 암기
console.log(isNaN(undefined)); // true // 이것 때문에 Number.isNaN()이 생김 console.log(isNaN(null)); // false console.log(isNaN(NaN)); // true console.log(Number.isNaN(undefined)); // false console.log(Number.isNaN(null)); // false console.log(Number.isNaN(NaN)); // true
- undefined는 정말 아무값도 없는 것을 의미한다.
- null은 값은 있는데, 유의미하지 않은 것을 의미한다.
- 그래서 undefined가 요소로 들어간 연산의 결과는 NaN으로 끝나지만, null은 그 값을 없는 값(0) 취급을 하고 넘어간다.
- null을 요소로 사용한 배열의 예시
let score = [10, 20, 30, null, 40, 50] let average = 0 for (const i of score) { console.log(i) average += i } average // 150
- undefined를 요소로 사용한 배열의 예시
let score = [10, 20, 30, undefined, 40, 50] let average = 0 for (const i of score) { console.log(i) average += i } average // NaN
- 언어적 이슈로 문제가 생기기 때문에, 되도록 2개 이상 중첩시키지 말 것