JavaScript是否有替代二元/一元运算符的内置函数别名?
关于JavaScript中运算符是否有内置函数别名的问题
首先直接给结论:JavaScript标准库中并没有为逻辑运算符(&&、||、!)、算术运算符(+、-、*等)提供官方内置的函数别名——也就是说你没法直接用array.reduce(and)替代array.reduce((a, b) => a && b),也不能用array.map(not)替代array.map(x => !x)这类写法。
具体展开说明:
二元运算符场景:
不管是逻辑与/或,还是加减乘除这类算术运算,JS都没有对应的全局函数(比如and、or、add、subtract)。如果你想把运算符转换成函数传递给reduce、filter这类方法,必须自己手动定义:// 逻辑与的函数封装 const and = (a, b) => a && b; [true, false, true].reduce(and); // 结果:false // 加法的函数封装 const add = (a, b) => a + b; [1, 2, 3].reduce(add); // 结果:6有些第三方工具库会提供这类工具函数,但这不属于JS官方标准的范畴。
一元运算符场景:
对于!这种一元逻辑非运算符,同样没有内置的not函数可用。你需要自行封装后才能用在map这类方法里:const not = x => !x; [true, false, true].map(not); // 结果:[false, true, false]
为什么JS不提供这些内置别名?
JS的设计理念更偏向于直接使用运算符本身来保持代码简洁性——毕竟&&、+这类符号已经非常简短,而额外提供函数别名反而会增加语言的冗余度。不过在函数式编程的场景下,开发者自行封装这类函数是非常常见的操作,这也符合JS灵活的特性。
内容的提问来源于stack exchange,提问作者LLlAMnYP
相关产品推荐
相关产品推荐

