What's the double exclamation mark for in JavaScript? | Brian Love

If you have ever noticed a double exclamation mark (!!) in someone's JavaScript code you may be curious what it's for and what it does. It's really simple: it's short way to cast a variable to be a boolean (true or false) value. Let me explain. typeof Java

brianflove.com

ㄴ개발자 선배님께 검색 방법 배우면서 찾았던 사이트

 

다음 값은 JavaScript에서 false 로 간주됩니다 .

  • 빈 문자열:""
  • 0
  • null
  • undefined
  • NaN

다음 값은 JavaScript에서 truthys로 간주됩니다.

  • 물체:{}
  • 정렬:[]
  • 비어 있지 않은 문자열:"anything"
  • 0이 아닌 숫자:3.14
  • 날짜:new Date();

코드를 실행하는 JavaScript 엔진은 if 문에서 평가되는 경우와 같이 필요할 때 값을 부울로 변환(또는 강제 변환)하려고 시도합니다.

 

 

느낌표가 이중인 이유는 무엇?

어떤 경우에는 변수를 명시적으로 부울 값으로 캐스팅할 수 있습니다. 왜요? 글쎄, 가장 큰 이유는 대부분의 개발자가 유형 안전 비교 연산자를 사용하지 않기 때문입니다.

유형 안전 비교 연산자는 다음과 같습니다.

  • 엄격하게 같음:===
  • 엄밀히 불평등:!==

유형 안전 비교 연산자를 사용할 때 값이 동일한지(또는 같지 않은지)와 해당 유형이 동일한지 모두 확인합니다. 유형 안전 비교 연산자가 없으면 JavaScript 엔진이 참/거짓 논리를 기반으로 변수를 참 또는 거짓으로 자유롭게 강제 변환할 수 있습니다.

JavaScript 변수를 부울로 변환하려면 두 개의 느낌표를 사용하면 됩니다.

function() {
  var name = 'Brian';

  //alert 'string'
  window.alert(typeof name);

  //cast to boolean
  var bool = !!name;

  //alert 'boolean'
  window.alert(typeof bool);
}

위의 예제 코드에서는 문자열 "Brian"을 boolean값으로 캐스팅합니다. 따라서 두 번째 경고는 변수가 이제 boolean값임을 나타냅니다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference

 

JavaScript 참고서 - JavaScript | MDN

이 페이지는 JavaScript 언어에 대한 정보 보관소입니다. 이 참고서에 대해 더 읽어보세요.

developer.mozilla.org

또한 기타 헷갈리는 연산자는 위의 페이지에서 하나하나 찾아보는 방법도 있다.

 

'JavaScript' 카테고리의 다른 글

[js] 동적 타이핑  (0) 2022.06.06
[js] 데이터 타입의 필요성  (0) 2022.06.06
[js] Inheritance prototype chain  (0) 2022.06.03
[js] 함수 호이스팅  (0) 2022.06.02
[js] Function  (0) 2022.06.02

+ Recent posts