亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript三元運算符的運算符優先級

Javascript三元運算符的運算符優先級

千巷貓影 2019-10-17 13:07:06
我似乎無法與三元運算符結合使用此代碼的第一部分(+ =)。h.className += h.className ? ' error' : 'error'我認為這段代碼的工作方式如下:h.className = h.className + h.className ? ' error' : 'error'但這是不正確的,因為這會導致控制臺出現錯誤。所以我的問題是我應該如何正確插入此代碼?
查看完整描述

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。


對于您的示例,在我的解釋中將“分配給”替換為“添加到”,或者對于您使用的速記算法(如果有的話)類似。


查看完整回答
反對 回復 2019-10-17
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

可以執行所需的+=操作,但是在其右側的三元語句中,它將檢查是否h.className為假,如果未定義則為假。如果是事實(即,如果已經指定了一個類名),則錯誤添加一個空格(即添加一個新的類),否則添加一個不帶空格的錯誤。


該代碼可以按照您的建議進行重寫,但是您需要指定該h.className值用于三元運算符中的真實性比較,而不是使用其實際值,因此請確保不要打擾值的串聯在執行三元操作的同時:


h.className = h.className + (h.className ? ' error' : 'error');


查看完整回答
反對 回復 2019-10-17
  • 3 回答
  • 0 關注
  • 1105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號