1个回答

test
2024-07-20
单纯看报错信息是死循环了。
Uncaught RangeError: Maximum call stack size **exceeded**
修改成这样就可以了
var add = function (a,b){
return (a&b) === 0 ? a^b : add((a&b) << 1, a^b)
}
主要出的问题是运算符的优先级的问题,比较运算符 会优先于 位运算符。所以实际上你的三元表达式的判断条件是这样执行的 a & (b === 0)
。所以除非执行的时候 b
传入的是 0
否则就永远没办法返回 true
值了。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容