这将返回true:空数组是假的,但在IF语句返回true
[] == false
但在这里,警报被称为:
if([]){ alert('empty array is true here'); }
你能解释一下为什么吗?
这将返回true:空数组是假的,但在IF语句返回true
[] == false
但在这里,警报被称为:
if([]){ alert('empty array is true here'); }
你能解释一下为什么吗?
这是因为==
在JS力转换,并且如果一个类型可以转换到另一个的返回值是true
,在这里,因为[]
不能被改变或比较用布尔它是假
其中作为if([])
检查null
和undefined
价值观和因为[既不是null或undefined则返回true
检查这个 Which equals operator (== vs ===) should be used in JavaScript comparisons?
“==转换力量”并不严格;另外,'if'检查的不仅仅是'null'或'undefined'。 – 2013-03-06 06:55:35
==
比较完成的。在第一步骤中,ToNumber()
被施加到false
和产量Number(0)
。在第二步中,规则#9将ToPrimitive()
应用于空数组,并产生""
,该数值转换为数字值也变为Number(0)
。
此外section 9.2说,这大约在表达式中使用的对象:
的抽象操作
ToBoolean
根据该表将其参数转换到布尔类型的数值:
通过你最近回答了这个问题的启发,胡? :) – dfsq 2013-03-06 06:28:17
@dfsq是的,你是对的:D – karaxuna 2013-03-06 06:28:57
好问题,但不要与两种情况下比较的东西混淆。检查由@Kobi提供的链接。 – dfsq 2013-03-06 06:32:57