React中多&&与运算表达式的运行逻辑及渲染效果疑问
解答
你的总结整体正确,仅在React渲染规则部分存在小范围遗漏,相关逻辑分别来自原生JavaScript语法规则与React官方定义的JSX渲染规则:
一、逻辑与(&&)的原生JavaScript规则
你总结的前两点是JS标准定义的短路求值特性,不属于React特有逻辑:
- 逻辑与
&&从左到右依次执行运算,每一步会将操作数隐式转换为布尔值判断真假 - 若遇到
false/null/NaN/undefined/""/0这类假值,会直接返回该假值的原始值,终止后续所有运算,符合你总结的第一条规律 - 若所有操作数均为真值,会返回最后一个操作数的原始值,符合你总结的第二条规律
二、React的JSX渲染规则
你总结的第三条存在部分遗漏:
- React明确规定,布尔值、
null、undefined三类值不会被渲染到DOM中 - 其余假值包括
0、""、NaN都会被正常渲染,并非只有0会被渲染:比如{0}会渲染出文本0,{""}会渲染空文本节点,{NaN}会渲染出文本"NaN"
以你给出的表达式ReactDOM.render(true && 123 && functionThatReturnBool && "foo")为例:
- 若
functionThatReturnBool返回false,整个表达式返回false,React不会渲染任何内容 - 若
functionThatReturnBool返回true,整个表达式返回"foo",React会渲染文本foo - 若把表达式替换为
0 && "foo",返回值为0,React会渲染出文本0
内容的提问来源于stack exchange,提问作者shamgar
相关产品推荐
相关产品推荐

