有一道js面試題,題目是這樣的:下列代碼的執行結果是什麼,為什麼?
復制代碼 代碼如下:
var i, j, k;
for (i=0, j=0; i<10, j<6; i++, j++) {
k = i+j;
}
document.write(k);
答案是顯示10,這道題主要考察JavaScript的逗號運算符。
下面是MDN對逗號運算符的定義:
逗號運算符計算兩個操作數(從左至右)並返回第二個操作數的值。
根據這個定義,可以擴展一下:
逗號運算符從左到右計算兩個或多個操作數並返回最後一個操作數的值。
可以感覺一下下面的代碼:
復制代碼 代碼如下:
alert((0, 9));
alert((9, 0));
if (0,9) alert("ok");
if (9,0) alert("ok");
逗號運算符在實際代碼中有什麼樣的作用呢?
1、交換變量,無需第三個變量
復制代碼 代碼如下:
var a = "a", b = "b";
//方法一
a = [b][b = a, 0];
//方法二
a = [b, b = a][0];
2、簡化代碼
復制代碼 代碼如下:
if(x){
foo();
return bar();
}
else{
return 1;
}
可以簡寫成:
復制代碼 代碼如下:
return x ? (foo(), bar()) : 1;