1

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

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

4 回答 4

6

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

Null, undefined, NaN,0和空字符串""评估为假。

为什么?因为ECMAScript 规范是这么说的。

于 2013-07-25T03:54:27.790 回答
0

Array() 是真实的。换句话说,它有一个值,并且该值不是 false、null 或 undefined。有很多关于什么是真实的列表,而不是 web 上的 javascript。举个例子,创建新数组的更“标准”/“公认”的方式是使用数组文字 - []。如果你把它放在你的控制台中,你也会得到“真”。

console.log(!!([]));
于 2013-07-25T03:53:56.457 回答
0

Array() 在这里返回数组(虽然是空的),试试(Array().length ? "true" : "false")

于 2013-07-25T03:56:24.287 回答
0

这里 Array()是一个构造函数,它将指向一个非空的已定义对象,即使
在您的示例中它是空的,但它是一个有效的对象,当它被转换为
布尔值时,它将被评估为真(只有未定义对象被评估为
假)。

于 2013-07-25T04:35:35.250 回答