js中的逗號運算符
阿新 • • 發佈:2018-08-09
class 逗號 var 直接 滿足 所有 表示 跳出循環 運算
逗號運算符
逗號運算符是二元運算符,它的操作數可以是任意類型。它首先計算左操作數,然後計算右操作數,最後返回右操作數的值,用逗號運算符可以在一條語句中執行多個運算
作用:
1.在一條語句中從左到右執行多個運算
2.返回右邊最後一個值作為表達式的結果(經常被忽略但是卻很重要的特性)
(i = 0), (j = 1), (k = 2);
//計算結果是2,它和下面的代碼基本等價
i = 0;
j = 1;
k = 2;
console.log(((i = 1), (j = 2), (k = 3))); //計算結果為2
應用場景:
1.同時聲明多個變量
var iNum1 = 1, iNum = 2, iNum3 = 3;
2.for 循環中三部分有多個變量時,使用,分割
var k;
for (var i = 0, j = 0; i < 6, j < 10; i++, j++) {
k = i + j;
}
console.log(k);
來一道醍醐灌頂的面試題:
var k;
for (var i = 0, j = 0; i < 6, j < 10; i++, j++) {
k = i + j;
}
console.log(k); //k=?
結果推測:
- k=10
解析:
因為 i=6 時,不滿足條件,跳出循環。(關系間為&&關系) - k=12
基礎原因考慮到 1,然後推測 k=i+j 是引用函數中的 i、j 所以當 log(k)的時候,應該輸出 i、j 循壞結束後的值即 i=j=6(閉包後遺癥) - k=18
因為 i < 6, j < 10 是或的關系,需要兩者同時值為 false - k=18
逗號運算符從左到右依次計算每個操作符,最終結果由最右的操作數決定,j<10 才為中止條件。
輸出答案:
console.log(k); //k=18
3、4 推測驗證:
var k;
for (var i = 0, j = 0; i < 6, j < 10, 2 < 1; i++, j++) {
k = i + j;
}
console.log(k);
驗證分析:
1.逗號分隔的是或的關系,那麽需要所有表達式都為false,結果依然為18 2.逗號分隔為運算符,那麽條件判斷最終結果為最右表達式2<1,那麽將不進入循環,直接輸出undefiend
驗證結果:
console.log(k);//k=undefined
結果分析,最終輸出k=undefined,for中的判斷表示式使用逗號分隔時,遵循逗號運算符的基本規則,最終結果由最右的操作數決定
js中的逗號運算符