作者: 3ldk 時間: 2023-12-5 10:59 標題: js if 逗號有何意義?
依兩段有乜分別? 有乜情況會需要用下面個寫法而非上面?
如果依個設計係無意義, 點解要整出黎徒增負擔? (interpreter的負擔, learner的負擔, reader的負擔)
- var a,b,c="c"
- a="a"
- b="b"
- if(c=="c") {
- console.log(a,b)
- }
- var a,b,c="c"
- if(a="a",b="b",c=="c") {
- console.log(a,b)
- }
作者: EITCo 時間: 2023-12-5 12:05
本帖最後由 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
對高手而言見慣而唔覺得難明
作者: 杜龍 時間: 2023-12-12 21:26
https://poe.com/s/o20hbxWPiK9qAOKx4y8V
