script는 변수를 공유하기때문에 let과 const를 사용해야합니다.
<script>
let num = 10.123123;
console.log(parseInt(num)); // 10
console.log(~~num); // 10
console.log(num.toFixed(3)); // "10.123" 문자열로 반환한다.
</script>
<script>
console.log(parseInt(" ")) // NaN
console.log(parseInt("")) // NaN
console.log(parseInt("hi")) // NaN
console.log(parseInt("10 20")) // 10
console.log(parseInt("10abc")) // 10 ***중요
console.log(parseInt("10")) // 10
console.log(parseFloat("10.123")) // 10.123
</script>
<script>
Math.abs(-10) // 절댓값 // 10
Math.ceil(10.3) // 끌어 올려~~~ // 11
Math.floor(10.3) //내려 // 10
Math.round(10.5) // 반올림 // 11
Math.round(10.4) // 반올림 // 10
Math.sqrt(100) //square root, 루트 // 10
Math.PI // 3.14
Math.min(1, 3, 5, 6, 7, 23, 9) // 1
Math.max(1, 3, 5, 6, 7, 23, 9) //23
// Math.min([1,2,3,4,5]) // 작동안됩니다.전개구문을 써야해요
Math.min(...[1,2,3,4,5]) // 1
let values = [1,2,3,4,5]
let values2= [6,7,8,11,10]
Math.max(...values) //5
Math.max(...values, ...values2) //11
// Math.random
Math.random() // 0이상 1미만 ex.0.48573458
// 1부터 10까지 아무 랜덤 숫자
parseInt(Math.random() * 10 + 1) // +1 해줘야 10을 포함
parseInt(Math.random() * 10) // 0부터 9를 포함
</script>
JS에서 큰 숫자를 사용할 때에는 BigInt를 사용해요
<script>
// 참고삼아 기억해주세요.
BigInt(5) + 5n // 10n
BigInt(5) + 5 // error
BigInt(5) / 2n // 2n (소수 표현 안됨)
BigInt("10") + BigInt("10") // 큰 값을 정수로 입력받을 때에는 string으로 처리해서 받아야 함
</script>
단락회로평가란? 논리 연산자 (&& , ||) 를 사용하여 연산을 진행 할 때 좌측 식의 값에 따라 우측 식의 실행 여부를 판단하는 동작
<script>
// 단락회로평가(***)
console.log(!"false") // false
console.log(!"0") // false
console.log(!false) // true
console.log(!0) // true
console.log('abc' / 2) // NaN
console.log(!!NaN) // false
console.log(!!undefined) // false
console.log(!!null) // false
let username = "";
username = username || "무명" //username이 false이므로 뒤에껄 봐야한다
console.log(username) // "무명"
let username2 = "크롱";
username2 = username2 || "무명"
console.log(username2) // 크롱
</script>
<script>
//9000원 이상이면 비싸다
//9000원 미만이고 7000원 이상이면 적절하다
//7000원 미만이면 저렴하다
const price = 7500
const message = (price >= 9000) ? '비싸다' : ((price >= 7000) ? '적절해요' : '저렴해요')
console.log(message) // 적절해요
</script>
nullish 연산자 (??) 는 왼쪽 피연산자가 null 또는 undefined일 때 오른쪽 피연산자를 반환하고, 그렇지 않으면 왼쪽 피연산자를 반환하는 논리 연산자이다.
이는 왼쪽 피연산자가 null 또는 undefined 뿐만 아니라 falsy 값( '' 또는 0)에 해당할 경우 오른쪽 피연산자를 반환하는 논리 연산자 OR (||)와는 대조된다.
<script>
let firstName = null;
let lastName = null;
let nickName = 'licat';
console.log(firstName ?? nickName) // licat
console.log(firstName ?? lastName ?? nickName) // licat
console.log(firstName ?? lastName ?? nickName ?? '익명 사용자')
// 만약 nickName도 null이면 마지막 '익명 사용자'가 떠요
</script>
<script>
// 단락회로평가와 nullish 연산자 차이점
let height = 0;
console.log(height || 100) // 100// 하이트가 없네용. 100 고
console.log(height ?? 100) // 0// 하이트가 null이야? 아니 0인데 -> 아그럼 0
</script>
<script>
// 암기
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
console.log("---");
console.log(isNaN(undefined)); // true
console.log(isNaN(null)); // false
console.log(isNaN(NaN)); // true
console.log("---");
// ES6에서 추가 도입(암기) *
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null)); // false
console.log(Number.isNaN(NaN)); // true
</script>
<script>
isNaN('hello world'); // true
Number.isNaN('hello world'); // false
//문자열은 숫자가 아닌 건 맞지만, 그 자체로 NaN이 아니기 때문이다.
</script>
isNaN()
인자로 들어온 값이 NaN
이거나, 값을 숫자로 변환했을 때 NaN
이면 참(true)을 리턴한다.
isNaN()
은 인자를 숫자로 변환하는 과정을 거쳐 판별한다.
Number.isNaN()
인자로 들어온 값이 NaN이어야만 참(true)을 리턴한다.
<script>
///////// 별표 4개 -짱짱중요짱짱
console.log(Boolean('hello')); // true
console.log(Boolean('')); //false
console.log(Boolean([1, 2, 3])); //t
console.log(Boolean([])); // t...말도안됨.
console.log(Boolean({'one': 10, 'two': 20})); //t
console.log(Boolean({})); // true
console.log(Boolean(0)); // f
console.log(Boolean(-1)); //t
//false
console.log(Boolean(undefined)); //false
console.log(Boolean(null)) //f
console.log(Boolean(NaN)) // f
</script>
<script>
let a;
console.log(a); // undefined
if (typeof a === "undefined") {
console.log('a에 아무것도 할당되지 않았습니다!')
}
//!a :: true undefined가 false이므로 !undefined는 true
if (!a) {
console.log('a에 아무것도 할당되지 않았습니다!')
}
</script>