为什么Boolean([])在JavaScript中是真的?

时间:2017-12-24 13:08:55

标签: javascript

我正在浏览JavaScript:The Definitive Guide。它在里面说

true

但我不明白这背后的逻辑。为什么是空数组Knob的布尔值?

3 个答案:

答案 0 :(得分:1)

数组被视为一个对象,即使它是空的。这就是<!DOCTYPE html> <html> <head> <link href="https://fonts.googleapis.com/css?family=Titillium+Web" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Satisfy" rel="stylesheet"> <link rel="stylesheet" type="text/css" href="css/main.css"> <title>My Portfolio</title> </head> <body> <div id="header"> <header>Mr. Philip Braun</header> <img src="img/greeny.png"> <h1 class="hvr-float-shadow">About Me</h1> <br> <p> I'm a funny and classy guy from London<br>and i dare you to click "About Me"<br>because if you don't, you are missing your chance of knowing about a guy<br>who works hard for what he is made and of course doing it<br> <b>perfectly<b><br> <b>with finesse</b> </p> </div> <br><br> <img class="braun" src="img/braun3.jpg"> </body> </html>有一个值的原因,意味着它是Boolean。 只有truefalsenull是将返回undefined的值。

答案 1 :(得分:1)

JavaScript(和其他语言)有一个“真理”的概念。并且&#39; falsey&#39;值。

你说你是来自C ++的背景,所以我们可以在C ++中将它类似于这样的东西:

if (ptr) { }

如果ptr为空则为假,否则为真。

恰巧在JavaScript中,数组 - 甚至是空数组 - 在许多其他方面都被认为是真实的。

答案 2 :(得分:1)

根据抽象的ToBoolean操作,ECMAScript规范定义了如何将值强制转换为布尔值:https://www.ecma-international.org/ecma-262/6.0/#sec-toboolean

该操作包括对象输入的单个条目:

  

对象:返回true

因此,当您向Boolean提供任何对象(包括数组(即使是空数组))时,您将获得true值,