我正在浏览JavaScript:The Definitive Guide。它在里面说
true
但我不明白这背后的逻辑。为什么是空数组Knob
的布尔值?
答案 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
。
只有true
,false
或null
是将返回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
值,