>웹 프론트엔드 >프런트엔드 Q&A >JavaScript에서 false 값은 무엇입니까?

JavaScript에서 false 값은 무엇입니까?

青灯夜游
青灯夜游원래의
2021-07-19 16:17:102738검색

JavaScript에서는 false, 0 및 기타 형태의 숫자 등 0("-0", "+0", "0.0" 및 "0x0"), null, 정의되지 않음, NaN, "document.all", " []", "{}", """"(빈 문자열) 및 기타 값은 모두 거짓 값입니다.

JavaScript에서 false 값은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

JavaScript

  • falsefalse
  • 0和其他形式的数字等的零-0+00.00x0(信贷RBT为十六进制形式)
    - `”“,’‘ 和 ```-长度的字符串0
  • null
  • undefined
  • NaN
  • document.all (仅在HTML浏览器中)这是一个奇怪的。document.all是一个假对象,带有typeof as undefined。它是IE11之前的IE中的Microsoft专有功能,并作为“蓄意违反JavaScript规范”而添加到HTML规范中,因此为IE编写的网站在尝试访问时不会中断document.all.something。这是虚假的,因为它if (document.all)曾经是在条件注释之前检测IE的流行方法。请参阅为什么document.all虚假?详情
    “ Falsey”仅表示JavaScript的内部ToBoolean函数return falseToBooleanunderlies !value,value ? ...: …;和if (value)。这是其官方规范(2018年工作草案)(自1997年第一个ECMAscript规范以来唯一的变化就是添加了ES6的Symbols,它们始终是真实的):

  • []

  • {}

  • ""(空字符串)

与==(宽松平等)的比较

值得一谈的是falsy值与的松散比较==,这会使用ToNumber()并可能由于潜在的差异而引起混淆。它们有效地分为三类:

  • false, 0, -0, "", '' 彼此匹配 ==
  • 例如false == ""'' == 0因此4/2 - 2 == 'some string'.slice(11);
  • null, undefined==
  • 例如,null == undefined但是undefined != false
  • 这也是值得一提的是,虽然typeof null回报'object',null是不是一个对象,这是一个长期的错误/怪癖这是不固定的,以保持兼容性。它不是一个真正的对象,并且对象是真实的(document.all当在HTML中实现Javascript时会发生“恶意违反” )
  • NaN 不匹配任何东西,用=====,甚至没有自己
    例如NaN != NaNNaN !== NaNNaN != falseNaN != null
  • 对于“严格相等”(===),没有这样的分组。只有false === false

这就是为什么许多开发人员和许多样式指南(例如standardjs)偏爱===且几乎从不使用的原因之一==

真正的价值观 == false

“ Truthy”仅表示JavaScript的内部ToBoolean函数return true。Javascript的应用怪癖要知道的(和另一个很好的理由,更喜欢=====):这是可能的值是truthy(ToBoolean回报true),而且还== false

你可能会认为这if (value && value == false) alert('Huh?')是不可能发生的逻辑上的可能性,但对于以下情况,它将是可能的:

  • "0"'0'-它们是非空字符串,这是正确的,但Javascript会将==数字与等效字符串匹配(例如42 == "42")。因为0 == false,如果 "0" == 0"0" == false
  • new Number(0)并且new Boolean(false)-它们是真实的对象,但是==看到它们的值which == false
  • 0 .toExponential(); -数值等于的对象 0
  • 任何类似的构造都会为你提供虚假的值,并包装在真实的类型中
  • [][[]][0]
  • 0 및 기타 형식의 숫자 등에서 거짓 값. 0 -0, +0, 0.00x0(16진수 형식의 RBT 크레딧)
- `"",'' 및 ` `` - 길이가 0

nullundefine

NaN

🎜🎜document.all(HTML 브라우저에서만) 이상한 문자열입니다. document.alltypeof정의되지 않음인 가짜 개체입니다. 이는 IE11 이전 IE의 Microsoft 독점 기능이었으며 IE용으로 작성된 웹 사이트가 액세스하려고 할 때 document.all.something을 손상시키지 않도록 "JavaScript 사양의 고의적인 위반"으로 HTML 사양에 추가되었습니다. IE 이전에는 if (document.all)가 조건부 주석을 감지하는 데 널리 사용되는 방법이었기 때문에 이것은 가짜입니다. document.all이 false인 이유를 참조하세요. 세부정보
"Falsey"는 단순히 JavaScript의 내부 ToBoolean 함수가 false를 반환한다는 의미입니다. ToBoolean!value, value? ...: ... 및 if (값)을 기반으로 합니다. 다음은 공식 사양(2018 작업 초안)입니다(1997년 첫 번째 ECMAscript 사양 이후 유일한 변경 사항은 ES6의 기호가 추가된 것인데 이는 항상 사실이었습니다). 🎜🎜🎜🎜[]🎜🎜🎜🎜{} 🎜🎜🎜 🎜""(빈 문자열)
🎜🎜🎜🎜🎜🎜 대 ==(느슨한 동등성) 🎜🎜🎜🎜 이야기할 가치가 있는 것은 거짓 값과 == 의 느슨한 비교입니다. code>는 <code>ToNumber()를 사용하며 잠재적인 차이로 인해 혼동을 일으킬 수 있습니다. 이는 사실상 세 가지 범주로 나뉩니다: 🎜🎜🎜false, 0, -0, "", '' 서로 일치 ==🎜🎜 예: false = = "",'' == 0따라서 4/2 - 2 == 'some string'.slice(11);🎜🎜 null , 정의되지 않음==🎜🎜예를 들어 null == 정의되지 않음이지만 정의되지 않음 != false🎜🎜이것은 또한 언급할 가치가 있는 점은 typeof null'객체'를 반환하지만 null은 객체가 아니지만 이는 호환성을 유지하기 위해 수정되지 않은 오래된 버그/특이점이라는 점입니다. . 실제 개체가 아니며 개체는 실제입니다(document.all Javascript가 HTML로 구현될 때 "악성 위반"이 발생함) 🎜🎜NaN은 아무것도 일치하지 않습니다. = =를 사용하세요. > 또는 ===, 자체 없이도
예: NaN != NaN, NaN !== NaN, NaN != false, NaN != null🎜🎜"엄격한 평등"(===)의 경우 다음이 있습니다. 그런 그룹은 없습니다. false === false만 가능합니다. 🎜🎜🎜이것이 많은 개발자와 많은 스타일 가이드(예: Standardjs)가 ===를 선호하고 ==를 거의 사용하지 않는 이유 중 하나입니다. 🎜🎜🎜🎜True 값 == false🎜🎜🎜🎜 "Truthy"는 단순히 JavaScript의 내부 ToBoolean 함수가 true를 반환한다는 의미입니다. Javascript 애플리케이션에서 알아야 할 특이한 점(그리고 ==보다 ===을 선호하는 또 다른 이유): 값이 진실일 수도 있습니다(ToBoolean) >는 true를 반환하고 == false도 반환합니다. 🎜🎜이 if (value && value == false) Alert('Huh?')는 일어날 수 없는 논리적 가능성이라고 생각할 수도 있지만 다음 상황에서는 다음이 가능합니다. 🎜🎜🎜"0"'0' - 비어 있지 않은 문자열이며 이는 정확하지만 Javascript는 == 동등한 문자열이 있는 숫자 일치(예: 42 == "42"). 0 == false이기 때문에 "0" == 0이면 "0" == false입니다. 🎜🎜new Number(0)new Boolean(false) - 실제 객체이지만 == 해당 값을 확인하세요. ​​== false / 코드>. 🎜🎜<code>0 .toExponential(); - 값이 0🎜🎜인 객체 유사한 구성은 실제 유형으로 래핑된 잘못된 값을 제공합니다🎜🎜[], <code>[[]][0] (JavaScript 평등 테이블 링크에 대한 cloudfeet 덕분에) 🎜🎜🎜🎜🎜좀 더 실제 값 ​​🎜🎜🎜 🎜 이것은 일부 사람들이 거짓일 것으로 예상할 수 있는 가치이지만 실제로는 사실입니다. 🎜
  • -1 및 0이 아닌 모든 음수 -1 和所有非零负数
  • ' '" ""false"'null'… 所有非空字符串,包括只是空格串
  • 来自的任何内容typeof,总是返回非空字符串,例如:

  • typeof null'object' 由于长期存在的错误/怪癖而返回字符串)

  • typeof undefined(返回一个字符串'undefined'
  • 任何对象(document.all浏览器中的“恶意违反”除外;请记住,null尽管有typeof其他建议,但这实际上不是对象)。包含:

  • {}

  • []
  • function(){}() => {}(任何功能,包括空功能)
  • Error以及 Error
  • 任何正则表达式
  • new(包括new Number(0)new Boolean(false))创建的任何内容
  • 任何符号
    true,1,"1"[1]回报true相比彼此==
  • ' ', " ", "false" , 'null'
… 공백 문자열만 포함하여 비어 있지 않은 모든 문자열

typeof에서 오는 모든 항목은 항상 비어 있지 않은 문자열을 반환합니다. 예:

🎜🎜typeof null code> (<code>'object'는 오랜 버그/특이로 인해 문자열을 반환합니다) 🎜🎜🎜typeof undefine ('undefine' 문자열을 반환합니다) code>) 🎜🎜🎜 모든 개체(<code>document.all 브라우저의 "악의적 위반" 제외. typeof에 대한 다른 제안에도 불구하고 null은 실제로 개체가 아님을 기억하세요). 포함: 🎜🎜🎜🎜{}🎜🎜🎜[]🎜🎜function(){} 또는 () => {}(빈 함수를 포함한 모든 함수) 🎜🎜ErrorError🎜🎜모든 정규 표현식🎜🎜new 사용( new Number(0)new Boolean(false) 포함) 무엇이든 생성 🎜🎜모든 기호
true, 1, "1" [1]==를 서로 비교하여 true를 반환합니다. 🎜🎜🎜【추천 학습: 🎜javascript 고급 튜토리얼🎜】🎜

위 내용은 JavaScript에서 false 값은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.