간단하게 호이스팅이란 런타임시 선언과 할당이 분리된 것
코드를 작성할 때는 스코프를 고려하여 실행을 예상하지만 실제 런터임 환경에서는 예상되로 실행되지 않을 수 있음.
이는 var로 선언한 변수가 초기화가 되어있지 않을 때 undefined로 최상단에 끌어 올려진다. => 호이스팅
typeof 연산자는 문자열로 반환한다.
function Person(name, age){
this.name = name;
this.age = age;
}
const p = {
name: "poco",
age: 99
}
const poco = new Person("poco", 99)
poco instanceof Person // => true
p instanceof Person // => false
const arr = []
const date = new Data()
Object.prototype.toString.call(arr) // -> '[object Array]
Object.prototype.toString.call(date) // -> '[object Date]'
값이 없다
JS에서 null은 수학적으로 0으로 취한다
!null // true
!!null // false
null + 123 // 123
null === false // false
아무것도 지정하지 않았을 때의 기본값
선언했지만 정의되지 않고 할당 x
let verb // undifined
undefined + 10 // NaN
!undefined // true
두개를 남용하기 보다는 비어있는 값을 null 또는 undefined로 쓰는 등의 일관적인 코드가 필요
11 + ' 문자' // '11 문자'
!!'문자' // true
!!'' // false
parseInt('9.999', 10) // 9
String(11 + ' 문자') // '11 문자'
Boolean('문자') // true
Boolean('') // false
Number("11")
parseInt('9.999', 10) // 9
typeof 123 === "nuber" // true
isNaN(123) // false => 123은 숫자가 아닌게 아니다. => 123은 숫자다. 라고 논리가 진행되기에 직관적인 이해가 어려울 수 있다.
isNaN(123 + "문자") // ture
Number.isNaN(123 + "문자") // false => Number를 붙어 사용을 권장, 엄격한 검사
잘 보고 갑니다