注意一下 && 和 == 号之间的优先级关系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