下面的javascript代碼正在給undefined做最後的輸出。但據我所知OR'|| 「運營商一旦得到」真實「就會停止評估。但是在這段代碼中,它試圖評估其餘條件,即使它在第一個表達式上成立。這個javascript短路分配問題是什麼
field = {
ipaddr: "0.0.0.0",
nodePresentInTopo: false
}
var bestName = field.ipaddr || (field.ip6addr && field.ip6addr != '::') ? field.ip6addr : undefined || field.sysid;
here bestName always evalueavtes to undefined but why?因爲它正在獲得field.ipaddr的值,即0.0.0.0
請解釋邏輯。
我可能是錯的,但我想? :除非把它放在括號中,否則吞下整個表達式() – HopefullyHelpful
結果可以是'field.ip6addr','undefined'或'field.sysid',**所有這些都是'undefined' ** – deceze
問題尋求調試幫助(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 (http://stackoverflow.com/help/mcve) –