Javascript 是否有可以代替二元运算符使用的函数?

Does Javascript have functions for use instead of binary operators?

我的问题最好用一个例子来说明。

有没有办法使用像

这样的语法
array.reduce(and)

而不是

array.reduce((a, b) => a && b)

在 Javascript?

类似的问题适用于其他二元运算符,例如 || + - * 和许多其他运算符。 ! 运算符存在类似的问题,例如 array.map(not).

编辑:

抱歉,如果不够清楚。我的意思是问 JS 是否像其他一些语言一样,为上述运算符提供了实际的 内置 别名。我很清楚我可以定义自己的函数来执行此操作。

实际上,是的——它们被称为 函数。 :-)

const and = (a, b) => a && b;
let array = [true, false, true];
console.log(array.reduce(and)); // false
array = [true, true, true];
console.log(array.reduce(and)); // true

我在那里使用了箭头函数,但它可以是任何类型的函数。

JavaScript 没有任何 other 方法可以做到这一点,但函数可以很好地完成这项工作,为常见操作提供可重用的语义。

重新编辑

I meant to ask whether JS has actual built-in aliases for the mentioned operators, like some other languages.

不,但是您显示的代码无论如何都不会使用别名。别名看起来像这样:array.reduce((a, b) => a and b)

您可以定义函数:

function and(x, y) {
 return x && y;
}

function or(x, y) {
 return x || y;
}


bool_values = [true, true, false];
console.log("and", bool_values.reduce(and));
console.log("or", bool_values.reduce(or));

function add(x, y) {
 return x + y;
}

function multiply(x, y) {
 return x + y;
}

num_values = [1, 2.5, 3]
console.log("and", num_values.reduce(add));
console.log("or", num_values.reduce(multiply));

唯一具有等效内置函数的二元运算符是 ** (Math.pow) and in (Reflect.has)。

关于 array.reduce(and, true)array.reduce(or, false) 具体而言,您可以将 every and some 与身份函数一起用作回调,或者 Boolean 使用内置函数。

实际上只有&&||两个方法,使用Array#every or Array#some with Boolean作为回调。

对于所有其他操作,您需要一个自己的函数。

function checkAnd(array) {
    return array.every(Boolean);
}

function checkOr(array) {
    return array.some(Boolean);
}

console.log(checkAnd([true, true, true]));
console.log(checkAnd([true, false, true]));
console.log(checkAnd([false, false, false]));

console.log(checkOr([true, true, true]));
console.log(checkOr([true, false, true]));
console.log(checkOr([false, false, false]));