在以下condition
声明的ternary
部分中,playlist.length
是否等于playlist.length >= 1
?
var playlist = ["video1", "video2", "video3", "video4", "video5"];
// some code here
alert ((playlist.length) ?
playlist.length + "video(s) remain in the playlist: " + playlist.join (", ") + "."
: "No videos remain in the playlist");
同样,在以下代码段中,! playlist.length
是否等于playlist.length === 0
?
alert ((! playlist.length) ?
"No videos in the playlist."
: playlist.length + " video(s) remain in the playlist: " + playlist.join(", ") + ".");
这是我第一次看到
condition
或ternary
语句的if
部分不包含===
或>=
这样的符号的示例{1}}。所以我不确定如何解释这个。
答案 0 :(得分:4)
0隐式转换为false。因此,当长度为0时,这是错误的。相反,在JavaScript中的布尔比较中,任何其他数字都会隐式转换为true。所以当长度不是0时,它就是真的。
一个简单的测试是使用<form method='POST' action=''>
{{ form.management_form }}
<input type='hidden' name='csrfmiddlewaretoken' value='3uQyEn4m8bHpM7Jy6a8WKQz5A8Uf6RZF' />
<div id="div_id_text" class="form-group">
<label for="id_text" class="control-label requiredField">
Text
<span class="asteriskField">*</span>
</label> <div class="controls ">
<textarea class="textarea form-control" cols="40" id="id_text" maxlength="500" name="text" rows="10">
</textarea>
</div>
</div>
<input class="btn btn-primary" type="submit" name="reminder_form" value="Send" />
</form>
来查看“真实”值
!!
!!1 === true
!!0 === false
答案 1 :(得分:1)
两者非常相似:!playlist.length
和playlist.length === 0
。
但是,它们与相同并不完全相同。事实上,在这里:
var playlist1 = [];
var playlist2 = {};
!playlist1.length // true
!playlist2.length // true
playlist1.length === 0 // true
playlist1.length === 0 // false
从这个意义上说,!playlist.length
也可用于各种对象,而不仅仅是数组。
在任何情况下,当在数组上使用它时,它是一种检查数组是否为空的方法,并且按照您的建议工作,与playlist.length === 0
相同。
答案 2 :(得分:0)
?
左侧的部分只是评估为“truthiness”。值0
为“falsy”,因此为了测试的目的,评估为false。 0
以外的数字值“非常”,因此为此目的评估为真。
三元的所有其他行为都是相同的。
===
和!==
只需添加额外约束,即L值和R值也必须是同一类型。
答案 3 :(得分:0)
在javascript中0等于false,任何其他数值等于true,但如果你使用===,它也会比较值类型。