以下代码将输出'true',这意味着Array()为true。在Python中,list()是False,这只是因为语言设计师的偏好?
document.write("<p>Array() is " + (Array() ? "true" : "false") + "</p>");
答案 0 :(得分:6)
这是因为javascript将Array()
的值强制转换为布尔值。这就是所谓的“真实性”,在javascript中,truthy值包括任何有效对象。 Array()
生成一个有效对象,因此在布尔表达式中计算为真值。
Null
,undefined
,NaN
,0
和空字符串""
评估为false。
为什么呢?因为ECMAScript spec这样说。
答案 1 :(得分:0)
Array()是真的。换句话说,它有一个值,值不是false,null或undefined。有许多列表是什么是真正的,而不是在网上的javascript。举个例子,我们接受了一个更加标准的“接受”标准&#39;创建新数组的方法是使用数组文字 - []。如果你把它放在你的控制台中,你就会得到真实的&#34;同样。
console.log(!!([]));
答案 2 :(得分:0)
Array()在这里返回数组(虽然为空),试试(Array().length ? "true" : "false")
答案 3 :(得分:0)
这里 Array()是一个构造函数,它甚至会指向一个非null的定义对象
它在你的例子中是空的,但是它是有效的,当它被转换成
时
布尔值,它将被评估为真(仅 null 和未定义对象被评估为
假)。