關於逗號( , )在JS中的使用技巧
阿新 • • 發佈:2019-01-28
第一次寫部落格,有點緊張,錯誤的地方大家幫我指導指導 0.0
在變數宣告中使用
var a,b = 3;
我所理解的執行順序為:
- b = 3
- var a = underfind
- var b = 3
- var a = underfind; var b = 3
function test(){ var a,b = 3; } test(); b; // b is not defind function test(){ var a,b = 3; return function(){ alert(b); // a = underfind } } test().call(null); // 3
在流程控制語句中
if(a = 3, true) { alert(a) } // 3
if(a = 3, false) { alert(a) } // no
alert(a) // 3
在上面的例子中,程式先從左至右執行,但是if執行的條件卻是根據第二個的boolan值執行,再看一個Domvar a,b,c = 1;
if(c){ //method1
b = 1;
if(b){
a = 1;
if(a){
alert();
}
}
}
if(c){ //method2
if(b=1, c){
if(a=1, b){
alert();
}
}
}
這兩行方法都是等價的,但是可讀性卻明顯不是一個層次,在多重流程控制語句中使用,號是多麼舒服
改變執行優先順序
alert(3,4) // 3
alert((3,4)) // 4
這怎麼有種 && 短路求值的味道,取最後一個為true的值,即覆蓋在 return 中返回多個值
var a = 3
,b = 4;
console.log((function(){ return b = 5,b })()) // 等價於 b = 5; return b
相當於將兩個單獨的語句合併成一句,可讀性更高
再找一個JQ原始碼上面的例子
( w.fn.init = function(){}).prototype = w.fn,q = w(r) // w.fn;q 也是等價的
未完待續......