3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
這樣想:
<variable> = <expression> ? <true clause> : <false clause>
語句的執(zhí)行方式基本上如下:
不<expression>計(jì)算為true,或者它評(píng)估為假的?
如果<expression>計(jì)算結(jié)果為true,則將的值<true clause>賦給<variable>,將<false clause>被忽略,并執(zhí)行下一條語句。
如果<expression>計(jì)算結(jié)果為false,則將<true clause>其忽略,并將的值<false clause>分配給<variable>。
使用這種語言和其他語言的三元運(yùn)算符要實(shí)現(xiàn)的重要一點(diǎn)是,無論代碼中的內(nèi)容是什么,<expression>在評(píng)估時(shí)都應(yīng)產(chǎn)生布爾結(jié)果:true或false。
對(duì)于您的示例,在我的解釋中將“分配給”替換為“添加到”,或者對(duì)于您使用的速記算法(如果有的話)類似。

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
可以執(zhí)行所需的+=操作,但是在其右側(cè)的三元語句中,它將檢查是否h.className為假,如果未定義則為假。如果是事實(shí)(即,如果已經(jīng)指定了一個(gè)類名),則錯(cuò)誤添加一個(gè)空格(即添加一個(gè)新的類),否則添加一個(gè)不帶空格的錯(cuò)誤。
該代碼可以按照您的建議進(jìn)行重寫,但是您需要指定該h.className值用于三元運(yùn)算符中的真實(shí)性比較,而不是使用其實(shí)際值,因此請(qǐng)確保不要打擾值的串聯(lián)在執(zhí)行三元操作的同時(shí):
h.className = h.className + (h.className ? ' error' : 'error');
添加回答
舉報(bào)