三元运算符需要返回

时间:2018-01-17 17:46:13

标签: javascript ternary-operator

为什么我们需要添加' return'到第4行的三元运营商? 当我评估一个独立的三元运算符,如incrementCounter时,我得到的返回值为1.所以我的理解是该表达式返回了一个值。所以'返回'在第4行似乎没有必要,尽管代码运行肯定需要它。

'five' === 'five' ? 1 : 0

2 个答案:

答案 0 :(得分:1)

与devtools控制台上的输入不同,JavaScript function不返回要评估的最后一个语句的结果值。您需要一个显式的return关键字来终止该函数并将结果返回给调用者。如果函数体评估在没有return的情况下结束,则隐式返回值undefined

答案 1 :(得分:0)

与之前的答案一样,您需要显式返回结果,否则函数的结果将为undefined。这可以通过使用return关键字来完成,但是由于javascript ES6,使用箭头函数表达式时不再需要return关键字。

以下功能:

const fn = function(x, y) {
    return x+y;
}

可以通过以下方式在ES6中编写(不需要return关键字):

const fn = (x, y) => x+y;

考虑到这一点(以及一些函数式编程原则),我们可以通过以下方式重写函数countOccurrence

const countOccurrence = array => value => array.filter(y => y == value).length;
        
const array = [2,3,2,4,2];
const valueToCheck = 2;
console.log(countOccurrence(array)(valueToCheck)); // => 3