✍ Today I Learned
undefined
- 값이 할당되지 않아 '타입'이 정해지지 않은 것을 의미한다. (정의되지 않은 변수, 값이 할당되지 않은 변수)
null
- object 타입이며, '값'이 정해지지 않은 것을 의미한다.
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
typeof
로는 배열(또는 Date)인지 아닌지 확인할 수 없다. (이럴 땐 isArray()
사용)
- 빈 객체로 초기화하고 싶을 때? string은 "", number는 0, array는 [], object는 {}, 나머지는 null 설정
Number()
는 빈 문자열은 0으로 반환, 그 외 다른 것은 NaN으로 반환
Number("3.14") // returns 3.14
Number(" ") // returns 0
Number("") // returns 0
Number("99 88") // returns NaN
- +, - 연산자는 앞쪽에 대상이 없을 경우 연산자가 아닌 양수, 음수의 의미를 지닌다. 따라서 데이터 타입은 number이다.
Date()
객체를 Number()
로 바꾸면 밀리초를 반환한다. (=getTime()
)
- null이 자동으로 형변환 되는 경우
5 + null // returns 5 null을 number 0으로 자동형변환
"5" + null // returns "5null" null을 string "null"로 자동형변환
- string "0"을 boolean으로 형변환 하면 true이다.
- 비트 연산자는 연산 우선순위가 높다.
- 호이스팅이란? 선언을 맨 위로 이동시키는 JavaScript의 기본 동작
- 변수 초기화는 호이스팅 되지 않는다!
- ES5에서 추가된 새로운 기능들에 대한 변경사항은 기본 모드에서는 활성화되지 않고,
"use strict"
라는 지시자를 통해 strict mode(엄격 모드)를 활성화했을 때만 작동한다. (예를 들면, 선언되지 않은 변수는 사용할 수 없다.)
- this 키워드는 자신을 감싸고 있는 자바스크립트 객체를 가리킨다.
- [travel 링크 이동 없이 이미지 바꾸기] 만들면서 느낀 점
- this 키워드를 이용하여 클릭 이벤트가 발생한 element의 innerText 가져와서 switch문으로 url 주소 바꿔줌
- 그러나 백틱 구문을 이용하면 코드량을 획기적으로 줄일 수 있음!
- 화살표 함수와 일반 함수가 다른 점은? 화살표 함수에서 this는 이벤트가 발생한 element가 아니라 window 객체를 가리킨다.