JavaScript的平等比较由于其松散的键入而可能很棘手。本文探讨了双(==)和三重(===)的细微差别等于操作员,以及真实和虚假的价值观的概念。
理解这些概念会导致更清洁,更可预测的代码。
JavaScript的动态键入允许灵活的值分配,但可能会导致意外的比较结果。 松散的平等(==)执行类型的胁迫,通常会导致令人惊讶的结果。严格的平等(===)直接比较值和类型,从而进行了更可靠的比较。
>false
,0
,-0
,0n
和""
>。所有其他值都是真实的,包括null
,undefined
>,NaN
和functions。
与真实/虚假的价值观的宽松平等比较可能是不可预测的。例如,'0'
是正确的,但是'false'
是false,[]
是正确的!严格的平等避免了这些歧义。{}
>
为了避免错误,请避免直接真实/虚假的比较。使用严格的平等(false == 0 == ''
)。这确保了可预测的行为。[] == true
[] == false
===
Boolean()
javascript变量是松散地键入的:!!
>
严格的平等(===)考虑类型:>
JavaScript的原始类型是:let x; x = 1; // x is a number x = '1'; // x is a string x = [1]; // x is an array
,
,// all true 1 == '1'; 1 == [1]; '1' == [1];
和
>。 其他一切都是一个对象(包括数组)。// all false 1 === '1'; 1 === [1]; '1' === [1];
undefined
null
boolean
number
真实与虚假的价值:bigint
>
string
每个值都有一个布尔等效:symbol
falsy:
,,,
,,
,false
0
>真相:-0
0n
>示例:""
null
undefined
NaN
(已弃用)也是虚假的。
宽松平等(==)比较:
>宽松的平等导致意外的结果,以真实/虚假的价值:
严格的平等(===)比较:
请注意,
始终是。NaN === NaN
>
false
>
!x
x == false
使用严格的平等(===
>转换为布尔值:Boolean(x)
!!x
了解真实/虚假的价值并使用严格的平等可提高代码可靠性。 避免进行宽松比较的陷阱,以防止调试头痛。
FAQS(缩写为简洁):真实/虚假的概念:
值在布尔上下文中被视为true/false。Boolean()
:松散与严格的平等; ==
===
>评估表达式:===
)和(&&
||
0
,""
,null
。
undefined
NaN
>转换为布尔值:-0
>使用Boolean()
影响操作结果。以上是真相和虚假的价值:的详细内容。更多信息请关注PHP中文网其他相关文章!