js三元表达式flag?flag:"other"的简写

一、简写方法

var result = flag ? falg : "other"  可简写为:
var result = flag || "other"

这个很常见,也经常用,但是有时候我们会忘记,但是ESlint会提示,并且能够自动fix。

我个人的看法是:二者皆可。

二、三元表达式

三元表达式易于理解,符合我们的正常思维习惯,这样的代码也便于他人阅读,尤其是给初学者看的demo,简写反而不美。其实,最符合我们习惯的是if-else类型的,上例可改写为:

var result = "";
if(flag){
  result = flag;
}else{
  result = "other";
}

上面的代码太占空间了,易懂而不易读。
三元表达式是一种在易读与易懂之间达到平衡的处理方式。

三、 || 运算符

|| 或运算符 给人的第一印象是逻辑运算符,因为|| 在一些其他语言中也存在,比如 java 中就有 || 表示 ,运算结果只能是Boolean,可选值只有两个:true false

但是,在javascript中,不一定!,来自MDN上的说法是:

逻辑运算符通常用于布尔型(逻辑)值。这种情况下,它们返回一个布尔值。然而,&&|| 运算符会返回一个指定操作数的值,因此,这些运算符也用于非布尔值。这时,它们也就会返回一个非布尔型值。

问题1:||具体怎么返回?

expr1 || expr2 若 expr1 可转换为 true,则返回 expr1;否则,返回 expr2。

问题2:怎么判断expr1 是否可转换为true?

会被转换为 false 的表达式有:(来自MDN)

  • null;
  • NaN;
  • 0;
  • 空字符串("" or '' or ``);
  • undefined。

言归正传。
如果理解|| 操作符,使用|| 简洁明了,还有点小酷,何乐而不为?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容