JavaScript:当“tri元”或“if”语句的“condition”部分不包括“==”或“>=”时
JavaScript: When the `condition` portion of a `ternary` or `if` statement does not include `===` or `>=`
在以下ternary
语句的condition
部分中,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(", ") + ".");
这是我第一次看到
ternary
或if
语句的condition
部分不包括===
或>=
这样的符号的示例。所以我不知道该怎么解释。
0在JavaScript中的布尔比较中被隐式转换为false。所以当长度为0时,这是错误的。相反,在JavaScript中的布尔比较中,任何其他数字都会隐式转换为true。因此,当长度不是0时,它是真的。
一个简单的测试是使用!!
来查看的"真实"值
!!1 === true
!!0 === false
!!6 === true
?
左侧的部分仅评估"真实性"。值0
是"falsy",因此在测试中评估为false。0
以外的数值是"truish",因此为此目的,计算为true。
三元的所有其他行为都是相同的。
===
和!==
只是添加了一个附加约束,即L值和R值也必须是相同的类型。
两者非常相似:!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
相同。
在javascript中,0等于false,任何其他数值都等于true,但如果使用===,它也会比较值类型。
- 如何将页面上的所有电话号码更改为可点击链接,不包括特定类别的元素
- 将正则表达式重新分解为不包括空组
- 为什么从JSON文本到类型的转换不包括函数
- XMLHttpRequest调用不包括If Modified Since标头
- 使用 JavaScript 执行一行 PHP(不包括 PHP 文件)
- 捆绑器不包括 .min 文件
- 与冒号(不包括冒号)之间的正则表达式单词匹配
- 包含特殊字符 (!,@,#,&) 不包括其他特殊字符
- Javascript RegEx:如何获取单引号之间的名称(不包括单引号)
- Javascript RegEx匹配URL's,但不包括图像
- Rails不包括用于javascript的require_tree
- 获取JS中特定路径的cookie,不包括根路径
- requireJS优化器不包括嵌套的require调用
- 不包括'+'和'&'正则表达式中的字符
- 如何获取html页面中所有p和h标记的值,不包括所有其他标记
- 使用javascript查找小数前的整数(不包括特殊字符)
- Javascript RegEx:在符号后获取1或2位数字(不包括该符号)
- 如何获取应用程序.js其中不包括压缩代码
- Javascript客户端提供哪些数据库,不包括特定于浏览器的数据库
- JavaScript:当“tri元”或“if”语句的“condition”部分不包括“==”或“>=”时