- Published on
JS短路求值
- Authors
- Name
- JiGu
- @crypto20x
其实这种特性叫短路求值,&& 会返回第一个假值(0, null, "", undefined, NaN),而 || 则会返回第一个真值。
所以 && 有时候会用来代替 if (expression) doSomething(),转成 && 方式就是 expression && doSomething()。
而 || 比较用来在函数中设置默认值,比如
function doSomething(arg1, arg2, arg3) {
arg1 = arg1 || 'arg1Value';
arg2 = arg2 || 'arg2Value';
}
不过还需要看具体的使用场景,就比如如果要求 doSomething() 传入的 arg1 为一个数值,则上面的写法就会出现问题(在传入 0 的时候被认为是一个假值而使用默认值)。
现在个人比较常用的方法只判断是否与 undefined 相等,比如
function doSomething(arg) {
arg = arg !== void 0 ? arg : 0;
}