3 回答

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

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