728x90


타입 강제와 약한 형식화


자바스크립트는 내부적으로 데이터 타입을 변환하여 작업을 완료할 수 있다.

이를 type coercion (타입 강제) 이라고 한다.


'1' > 0 이라는 구문에서 문자열 1이 숫자 1로 강제 변환되고 true를 return할 수 있다.


강력한 형식화를 사용하는 일부 다른 프로그래밍 언어와 달리, 자바스크립트는 약한 형식화를 사용한다.


따라서 의도하지 않은 값을 만들어내는 것이 싫다면 동등 비교 연산자 ==, != 를 쓰는 것보다 

일치 비교 연산자 ===, !== 를 쓰는 것이 권장된다.



===, !== 는 같은 값인지 여부 뿐만 아니라 데이터 타입도 비교한다.




단축 평가 값


OR 연산자를 사용할 때는 true를 리턴할 가능성이 높은 코드를 첫번째 조건으로 작성하고,

AND 연산자를 사용할 때는 false를 리턴할 가능성이 높은 코드를 첫번째 조건으로 작성한다.


단축 평가 기버은 페이지 내에 요소가 존재하는지를 검사하는 용도로 활용이 가능하다.



자바스크립트에서 true와 false

자바스크립트에서 숫자 0이나 빈 값, 값을 대입하지 않은 변수는 false로 취급된다.


반면에 내용을 가진 문자열이나 0이 아닌 다른 숫자는 true이다.



단항 연산자에서 

if( document.getElementById('header') ) 라는 구문이 있다면


ifdocument.getElementById('header'== true ) 로 생각하기 쉽다.

하지만 boolean값인 true와 document.getElementById('header') 가 
리턴되는 객체(true로 취급될 순 있어도)는 엄연히 다른 값이다!

논리 연산자는 항상 true나 false를 리턴하지 않는다. 

처리를 중지하게 된 계기가 된 값을 리턴하거나, 
그 값이 실제로 boolean type이 아니더라도 true나 false로 취급될 수 있다.


예약된 데이터 타입

단순혹은 기본 데이터 타입인 String, Number, Boolean, Undefined, Null

복합데이터 타입인 Object



true, false는 boolean 값이므로 (false === 0)은 

type이 일치하지 않으므로 false를 return한다.


(undefined == null)이 true지만, (undefined === null)은 false이다. 

boolean과 마찬가지로 undefined도 하나의 형식이기 때문이다.





'Study > JavaScript' 카테고리의 다른 글

[JavaScript] Proxy  (0) 2024.04.03
[JavaScript] 기본  (0) 2021.10.18
html + javascript 기초  (0) 2021.01.07
자바 스크립트 기초 - 함수, 메서드, 객체  (0) 2017.03.27

+ Recent posts