JavaScript:当`ternary`或`if`语句的`condition`部分不包括`===`或`> =`

时间:2015-12-14 21:12:27

标签: javascript if-statement ternary-operator

在以下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(", ") + ".");
  

这是我第一次看到conditionternary语句的if部分不包含===>=这样的符号的示例{1}}。所以我不确定如何解释这个。

4 个答案:

答案 0 :(得分:4)

在JavaScript中的布尔比较中,

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.lengthplaylist.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,但如果你使用===,它也会比较值类型。