-
자바스크립트 Truthy and Falsy values, equality operatorsjavascript 2020. 5. 21. 03:10
falsy value is a value that is considered false when evaluated
falsy values : undefined, null, 0, ''(비어있는 문자), NaN
All of this five different values here will be converted to false when evaluated in a true/false condition
truthy value is a value that is considered true when in evaluated in an if/else statement condition.
So, basically, it's all the values that are not falsy.
truthy values : NOT falsy values
//case 1 var height; if(height){ console.log('Variable is defined'); //height의 값이 true일때 }else{ console.log('variable has NOT been defined'); //height의 값이 false일때 } //결과 : height 변수 선언만 하고 값을 안넣어 주었기 때문에 undefined가 되고 false로 판정된다. //따라서 콘솔에 찍히는 결과는 variable has NOT been defined //case 2 height = 'a'; if(height){ console.log('Variable is defined'); //height의 값이 true일때 }else{ console.log('variable has NOT been defined'); //height의 값이 false일때 } //결과 : height에 값이 들어갔으므로 true로 판정되고 //Variable is defined 가 출력된다. //case 3 height = ''; if(height){ console.log('Variable is defined'); //height의 값이 true일때 }else{ console.log('variable has NOT been defined'); //height의 값이 false일때 } //결과 : height값에 '',즉 공문자(아무것도 안들어 간 문자'가 설정되어있으므로 //false로 판정되고 //variable has NOT been defined 가 출력된다. //case 4 height = 0; if(height){ console.log('Variable is defined'); //height의 값이 true일때 }else{ console.log('variable has NOT been defined'); //height의 값이 false일때 } //결과 : height에 0이라는 숫자값이 들어갔지만, 0은 falsy value이므로 false로 판정된다. //따라서 variable has NOT been defined 가 출력된다. //그렇다면 값에 0이 들어간게 맞는지 아닌지 확인하고 싶을때는 어떻게 해야할까 //case 5 height = 0; if(height === 0){ console.log('Variable is defined'); //height의 값이 true일때 }else{ console.log('variable has NOT been defined'); //height의 값이 false일때 } //결과 : Variable is defined 가 출력된다. //이런식으로 연산자를 사용해 값을 알아주면 된다.
Equality operators
var height; height = 23; if (height == '23'){ console.log('The == operator does type correction!'); }
위 코드를 실행하면 조건이 true가 되어 콘솔에 결과가 찍힐까?
정답은 그렇다 이다. ==연산자를 쓰게 되면 자바스크립트가 자동으로 문자열 '23'을 숫자 23으로 바꿔서 height값과 비교하기 때문에 true 조건이 된다.
그렇다면,
var height; height = 23; if (height === '23'){ console.log('The == operator does type correction!'); }
===연산자를 썼을 때는 결과가 어떻게 될까?
정답은 height === '23'은 false가 되어 콘솔에 값이 찍히지 않는다.
===연산자는 타입까지 비교하기 때문에 숫자23과 문자열23이 다르다고 판단해 값이 false가 되는 것이다.
참조 :
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
NaN이란
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/NaN
Udemy - The Complete JavaScript Course 2020 : Build Real Projects!
'javascript' 카테고리의 다른 글
자바스크립트 Object (0) 2020.05.22 자바스크립트 예제 (0) 2020.05.22 switch(true) (0) 2020.05.21 자바스크립트 연산자 우선순위 (0) 2020.05.18 자바스크립트 함수(계속 업데이트 예정) (0) 2020.05.18