js if 逗號有何意義?

依兩段有乜分別? 有乜情況會需要用下面個寫法而非上面?
如果依個設計係無意義, 點解要整出黎徒增負擔? (interpreter的負擔, learner的負擔, reader的負擔)
  1. var a,b,c="c"
  2. a="a"
  3. b="b"
  4. if(c=="c") {
  5.         console.log(a,b)
  6. }
複製代碼
  1. var a,b,c="c"
  2. if(a="a",b="b",c=="c") {
  3.         console.log(a,b)
  4. }
複製代碼

本帖最後由 EITCo 於 2023-12-5 12:07 編輯

第二段if內逗號唔係特別同if有關嘅syntax
唔似 for(i=0; i<n; i++) 啲分號有規定喺for()入面點用

JS逗號類似C,都可以將多個expressions串埋
( expression_1, expression_2, ..., expression_n )
形成一個複合expression
就如同好多其他binary operators咁,例如 x_1+x_2+...+x_n

執行逗號串埋嘅複合expression時會執行晒入面每一段
最後evaluate成最後一段本身evaluate出嘅數值
例如執行 x = ( (1+2), 3, (4+5) ) 之後,x會係9
而 (1+2) 同埋 3 都有「執行」過,但冇寫嘢接住佢地,所以掉咗
如果冇咗外層括號,會變咗同 (x = 1+2), 3, (4+5) 一樣,因=優先過逗號

如寫 x = ( console.log(1+2), (y=3), (4+5) )
就會print 3,assign y做3,最後evaluate成9,assign去x

咁應該明你兩個if點解一樣
一般係好少咁樣用逗號,多數人會拆返開做幾行,易明啲
偶然先可能用得著而有好處,如以下同時loop i同j嘅 i++, j-- 部分
for (let i = 0, j = 9; i <= 9; i++, j--)

除咗有啲人慣咗寫到行數同字數上好精簡
可能佢地寫開高深啲嘅code,如Linux kernel
對高手而言見慣而唔覺得難明

TOP

TOP