javascript - a==a?a:b 和 a?a:b 的区别
问题描述
两者都是一样的。那么它们之间有什么区别呢?
let a=NaN;
let b=2.2
console.log(a==a?a:b);
console.log(a?a:b);
解决方案
第一条语句将始终返回true
,除了 when a
isNaN
为什么
NaN == NaN
返回 false ?
因为 JS 规范是这样说的:
- 如果 Type(x) 是 Number,那么
- 如果 x 是 NaN,则返回 false。
- 如果 y 是 NaN,则返回 false。
只有当不是变量时,第二条语句才会返回。true
a
falsy
当我说falsy
我的意思是undefined , null , 0 , ''。假值是在布尔上下文中评估时转换为假的值。
实话实说:
在 JavaScript 中,真值是在布尔上下文中评估时被认为是真的值。所有值都是真实的,除非它们被定义为虚假(即,除了 false、0、“”、null、undefined 和 NaN)。
假的:
假值是在布尔上下文中评估时转换为假的值。
推荐阅读
- android - 重新连接到网络后如何获取有效的 Firebase appcheck 令牌?
- google-gsuite - 发生错误:对 directory.users.signOut 的 API 调用失败并出现错误:请求的身份验证范围不足
- python - 硒超时异常
- node.js - 是否可以在 express 应用程序中运行节点工作程序
- python - 如何忽略特定索引?Python
- python - 如何解决此正则表达式问题以匹配可选列和空格?
- python - 带有 TypeError 的自动测试暂停:“str”对象不可调用
- python - Celery - 将任务名称分配给组中的任务
- linux - 如何使用 SFTP 在一行中传递 UserName@HostId、密码、端口号?
- typescript - 在 Angular 12 中使用友好的 URL 而不是 ID 呈现链接