注意一下 && 和 == 號之間的優先級關係javascript
請首先看以下代碼, 判斷下 && 和 == 的優先級java
const emptyObj = {name: "kylin"}; if (emptyObj && emptyObj.name === "kylin") { console.log("my name is kylin"); }
首先說明
** == 的優先級是高於 && 的 **code
可能你們本身邏輯判斷的時候, 實際上是想判斷下 emptyObj 是非空, 而後再比較 emptyObj.name 與 keylin 的關係, 但這裏的執行順序就有了問題圖片
若是ip
const emptyObj = null; if (emptyObj && emptyObj.name === "kylin") { //Uncaught ReferenceError: empty is not defined console.log("my name is kylin"); }
fix: (須要添加括號修正優先級)console
const emptyObj = null; if ((emptyObj && emptyObj.name) === "kylin") { //Uncaught ReferenceError: empty is not defined console.log("my name is kylin"); }
附一個圖片class
{% asset_img javascript-優先級.png %}im