JavaScript 中的 && 與 || 的用法(不用在判斷布爾值上)

https://segmentfault.com/q/1010000004265392
http://www.w3school.com.cn/js/pro_js_operators_boolean.asp


var x = a || b || c 等价于:

var x;
if(a){
    x = a;
} else if(b){
    x = b;
} else {
    x = c;
}


var x = a && b && c 等价于:

var x = a;
if(a){
    x = b;
    if(b){
        x = c;
    }
}


这种特性叫短路求值,&& 会返回第一个假值(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;
}



程式語言編年史

程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...