javascript为什么Array()是真的?

时间:2013-07-25 03:51:01

标签: javascript

以下代码将输出'true',这意味着Array()为true。在Python中,list()是False,这只是因为语言设计师的偏好?

    document.write("<p>Array() is " + (Array() ? "true" : "false") + "</p>");

4 个答案:

答案 0 :(得分:6)

这是因为javascript将Array()的值强制转换为布尔值。这就是所谓的“真实性”,在javascript中,truthy值包括任何有效对象。 Array()生成一个有效对象,因此在布尔表达式中计算为真值。

NullundefinedNaN0和空字符串""评估为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 未定义对象被评估为
  假)。