JavaScript에서는 false, 0 및 기타 형태의 숫자 등 0("-0", "+0", "0.0" 및 "0x0"), null, 정의되지 않음, NaN, "document.all", " []", "{}", """"(빈 문자열) 및 기타 값은 모두 거짓 값입니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
JavaScript
false
false
0
和其他形式的数字等的零-0
、+0
、0.0
和0x0
(信贷RBT为十六进制形式)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 false
。 ToBoolean
underlies !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
与==
ull == undefined
但是undefined != false
typeof null
回报'object',null
是不是一个对象,这是一个长期的错误/怪癖这是不固定的,以保持兼容性。它不是一个真正的对象,并且对象是真实的(document.all
当在HTML中实现Javascript时会发生“恶意违反” )==
或===
,甚至没有自己NaN != NaN
,NaN !== NaN
,NaN !
= false
,NaN != 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.0
및 0x0
(16진수 형식의 RBT 크레딧)nullundefine
NaN
🎜🎜document.all(HTML 브라우저에서만) 이상한 문자열입니다.document.all
은 typeof
가 정의되지 않음
인 가짜 개체입니다. 이는 IE11 이전 IE의 Microsoft 독점 기능이었으며 IE용으로 작성된 웹 사이트가 액세스하려고 할 때 document.all.something을 손상시키지 않도록 "JavaScript 사양의 고의적인 위반"으로 HTML 사양에 추가되었습니다. IE 이전에는 if (document.all)
가 조건부 주석을 감지하는 데 널리 사용되는 방법이었기 때문에 이것은 가짜입니다. document.all
이 false인 이유를 참조하세요. 세부정보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(){}
또는 () => {}
(빈 함수를 포함한 모든 함수) 🎜🎜Error
및 Error
🎜🎜모든 정규 표현식🎜🎜new
사용( new Number(0)
및 new Boolean(false)
포함) 무엇이든 생성 🎜🎜모든 기호true, 1, "1"
및 [1]
는 ==
를 서로 비교하여 true
를 반환합니다. 🎜🎜🎜【추천 학습: 🎜javascript 고급 튜토리얼🎜】🎜위 내용은 JavaScript에서 false 값은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!