Javascript是否具有使用函数而不是二元运算符?

时间:2018-04-15 18:08:30

标签: javascript function logical-operators binary-operators

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

有没有办法使用像

这样的语法
array.reduce(and)

而不是

array.reduce((a, b) => a && b)
在Javascript中

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

修改

道歉,如果不够清楚的话。我想询问JS是否为所提到的运算符提供了实际的内置别名,就像其他一些语言一样。我很清楚我可以定义自己的功能来实现这一目标。

4 个答案:

答案 0 :(得分:2)

实际上,是的 - 它们被称为功能。 : - )

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没有任何其他方法,但函数可以很好地完成工作,为常见操作提供可重用的语义。

重新编辑

  

我的意思是询问JS是否为所提到的运算符提供了实际的内置别名,就像其他一些语言一样。

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

答案 1 :(得分:2)

具有内置函数等价物的唯一二元运算符是**Math.pow)和inReflect.has)。

有关array.reduce(and, true)array.reduce(or, false)的具体说明,您可以将everysome与身份功能一起用作回调,或Boolean使用内置功能。

答案 2 :(得分:1)

实际上&&||只有两种方法,使用Array#everyArray#someBoolean作为回调。

对于所有其他的活动,你需要一个自己的功能。



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]));




答案 3 :(得分:0)

您可以定义功能:

apt install python2-pip