为什么三元(“0” ? “yes” : “no”) 在 javascript 中会返回 “yes”
Why would ternary ("0" ? "yes" : "no") return "yes" in javascript?
之前
可能有人问过,但我找不到。我也阅读了规格,没有看到任何可以解释为什么"0"
评估为true
的奇怪之处.
那么"0" ? "yes" : "no"
为什么要返回yes
呢?
("0"==true) ? "yes" : "no"
按预期工作。
非空字符串是真实的。 "0"
不是0
.
但是,比较会将0
强制为一个数字。
请注意,在比较过程中唯一可以强制true
的字符串是 "1"
。(如果我缺少边缘情况,请告诉我!
"true" == true // false
"foo" == true // false
"0" == true // false
"1" == true // true
如果字符串至少有一个字符,则该字符串的计算结果将为 truey。因此,您的第一个示例将返回"yes"。
但是,如果您使用了类似以下内容的内容,它将返回 no:
"" ? "yes" : "no" // this evaluates to "no" since an empty string is considered falsey
这是 javascript 中类型强制发生的直接结果。我鼓励您查看以下链接,以获取有关什么是类型强制及其工作原理的更多信息: 类型强制
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- AJAX:$_GET不返回任何值
- 从Javascript方法返回全局变量
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 为什么三元(“0” ? “yes” : “no”) 在 javascript 中会返回 “yes”