一、简写方法
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。
言归正传。
如果理解|| 操作符,使用|| 简洁明了,还有点小酷,何乐而不为?