什么是JavaScript的是“falsey”的值,这意味着它们评估为假像表情if(value),value ?和!value?
JavaScript中的假值
false
0
和其他形式的数字等的零-0
,0.0
和0x0
(信贷RBT为十六进制形式)document.all
是一个假对象,带有typeof
as undefined
。它是IE11之前的IE中的Microsoft专有功能,并作为“蓄意违反JavaScript规范”而添加到HTML规范中,因此为IE编写的网站在尝试访问时不会中断document.all.something。这是虚假的,因为它if (document.all)
曾经是在条件注释之前检测IE的流行方法。请参阅为什么document.all
虚假?详情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]
(感谢cloudfeet对JavaScript的平等表链接)一些更真实的价值
这些只是一些人可能期望是虚假的价值观,但实际上是真实的。
-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
相比彼此==
。在JavaScript中,哪些值是“Falsey”,这意味着它们在表达式中被评估为false,比如,和? 对堆栈上的假值的用途进行了一些讨论 我在MDN JavaScript参考中找不到任何完整的列表,我惊讶地发现,在寻找JavaScript中虚假值的完整、权威列表时,最重要的结果是博客文章,其中一些文章有明显的遗漏(例如,),并且没有一篇具有类似堆栈的格式
本文向大家介绍javaScript中的空值和假值,包括了javaScript中的空值和假值的使用技巧和注意事项,需要的朋友参考一下 JavaScript 是世界上最流行的编程语言。这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。 JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言。 JavaScript 是可插入 H
从数组中移除 falsey 值元素。 使用 Array.filter() 过滤掉数组中所有 假值元素(false, null, 0, "", undefined, 和 NaN)。 const compact = arr => arr.filter(Boolean); compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]); //
问题内容: 我遵循了有关创建JavaScript秒表,并试图将其扩展为可与多个秒表(一个类的多个实例)一起使用。我遇到的问题是,当我试图在时钟滴答声中显示当前值时,我需要使用“this”对类实例进行硬编码,这是行不通的(在我使用console.log的那一行中)。我已将代码缩减到最低限度以尝试理解这一方面,并粘贴了以下内容: 我认为以下链接描述了我的问题,但我对它的理解不足以在此处应用。问题是
问题内容: 长话短说:我需要使用PHP风格的getter,但要使用JavaScript。 我的JavaScript仅在Firefox中运行,因此我可以使用Mozilla特定的JS。 我能找到的制作JS吸气剂的唯一方法是指定其名称,但我想为所有可能的名称定义一个吸气剂。我不确定这是否可行,但我非常想知道。 问题答案: 可以做到!我很高兴这个存在!这里给出一个答案:是否有与python的__getat
我想从数据数组中获得所有名称。有没有什么方法可以不用迭代器来做呢?