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
asundefined
。它是IE11之前的IE中的Microsoft专有功能,并作为“蓄意违反JavaScript规范”而添加到HTML规范中,因此为IE编写的网站在尝试访问时不会中断document.all.something。这是虚假的,因为它if (document.all)
曾经是在条件注释之前检测IE的流行方法。请参阅为什么document.all
虚假?详情
“ Falsey”仅表示JavaScript的内部ToBoolean
函数returnfalse
。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
函数returntrue
。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>는 ToNumber()
를 사용하며 잠재적인 차이로 인해 혼동을 일으킬 수 있습니다. 이는 사실상 세 가지 범주로 나뉩니다:
false, 0, -0, "", ''
서로 일치
==
예:
false = = ""
,
'' == 0
따라서
4/2 - 2 == 'some string'.slice(11)
;
null , 정의되지 않음
및
==
예를 들어 n
ull == 정의되지 않음
이지만
정의되지 않음 != 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 / 코드>. 0 .toExponential()
; - 값이 0인 객체 유사한 구성은 실제 유형으로 래핑된 잘못된 값을 제공합니다
[], [[]]
및
[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> ('object'
는 오랜 버그/특이로 인해 문자열을 반환합니다)
typeof undefine
(
'undefine' 문자열을 반환합니다) code>) 모든 개체(document.all
브라우저의 "악의적 위반" 제외. typeof에 대한 다른 제안에도 불구하고 null은 실제로 개체가 아님을 기억하세요). 포함:
{}
[]
function(){}
또는
() => {}
(빈 함수를 포함한 모든 함수)
Error
및
Error
모든 정규 표현식
new
사용(
new Number(0)
및
new Boolean(false)
포함) 무엇이든 생성 모든 기호
true, 1, "1"
및
[1]
는
==
를 서로 비교하여
true
를 반환합니다. 【추천 학습: javascript 고급 튜토리얼】
위 내용은 JavaScript에서 false 값은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!