250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- PS
- 이진탐색
- CHECK OPTION
- JPQL
- execute
- shared lock
- BOJ
- 즉시로딩
- dfs
- 일대다
- 비관적락
- 유니크제약조건
- 연관관계
- querydsl
- 다대다
- 데코레이터
- SQL프로그래밍
- 스프링 폼
- 백트래킹
- 힙
- FetchType
- exclusive lock
- 연결리스트
- 지연로딩
- fetch
- 동적sql
- 스토어드 프로시저
- 낙관적락
- 다대일
- eager
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
'!!' 는 js에서 무엇을 의미하는가? 본문
728x90
다른사람의 JavaScript 코드에서 !! 를 보고 저게 무슨 효과가 있는지 의문을 가졌을 수도 있다.
결론 : 변수를 boolean type으로 바꾸는 가장 간단한 방법이다
JavaScript는 static language가 아니고 dynamic language이다. 이 말은 변수는 어느 type이든 참조하거나 가질수 있고, 그 type은 어느 지점에서든 바뀔 수 있다.
JS에서 type은 대표적으로 아래와 같은 type이 있다. 물론 다른 것도 더 있음.
- Boolean
- String
- Number
- Object
True 와 Truthy
function() {
var thisIsTrue = true;
if (thisIsTrue) {
window.alert('It certainly is!');
}
}
if문을 판단할 때, thisIsTrue는 boolean 타입으로 명백하게 true니까 블록을 실행될것이다.
if문은 boolean 타입이 아닌 다른 type이 와도 boolean으로 casting해서 판단한다.
function() {
var nothing = '';
if (nothing) {
window.alert('Nothing');
} else {
window.alert('Huh?');
}
}
이 코드가 실행되면 'Huh?'라는 알림이 뜬다.
빈 문자열인 nothing이라는 변수는 false 로 평가되기 때문이다.
이것이 우리가 truthy나 falsey 라고 표현하는 것.
truthy의 종류:
- Object: {}
- Array: []
- Not empty string: "anything"
- Number other than zero: 3.14
- Date: new Date();
falsey의 종류:
- Empty string: ""
- 0
- null
- undefined
- NaN
자바스크립트 엔진은 우리의 변수를 필요할 때 boolean 타입으로 변환한다.
그래서 !! 가 무엇이냐
자바스크립트 변수를 boolean 타입으로 변환하는 간단한 방법이 !!이다. 아래는 데모코드이다.
function() {
var name = 'Brian';
//alert 'string'
window.alert(typeof name);
//cast to boolean
var bool = !!name;
//alert 'boolean'
window.alert(typeof bool);
}
'Javascript' 카테고리의 다른 글
[JS] 객체 destructuring 할 때 원하는 변수만 쏙 (0) | 2022.04.10 |
---|---|
Date.now().toString()과 new Date().toString() 의 차이 (0) | 2022.04.10 |
[JS] class에서 this 바인딩에 대해 (0) | 2022.03.11 |
자바스크립트 최신 문법 (ES6, ES11) (0) | 2022.02.01 |
[JS] 자바스크립트를 깔끔하게 코딩하는 팁 (0) | 2022.01.31 |