const o ={age:1}; function test() { return o.age??0 +1; }; const b =test(); console.log(b) //1 昨天开发时遇到一个 bug,有一段类似于上述 `o.age??+1` 这样的一段逻辑,我最开始根本没有怀疑这个代码的合理性,查找半天以后,我抱着试一试的心理,将代码添加了一个括号, `(o.age??0)+1` 然后运算正常。  **问:** 为什么会 `b= o.age??0+1` 不符合正常的 `b=2`的期望结果呢? * * * 根据下面答主的回答,自己总结了一下这个问题的答案: `o.age ??0 + 1` 整段代码的运算逻辑是: 1. 先计算 0+1 ,结果为 1; 2. 然后取 o.age 的值,也就是上述值 1; 3. 然后开始运算 ?? , 1 ?? 1; 4. 由于前面的 1 不为 falsy; 5. 则结果取 1