箭头功能是否必须始终返回值?

时间:2018-12-14 13:44:09

标签: javascript ecmascript-6 return arrow-functions

很多次使用Eslitn或其他整理工具时,我都会收到如下错误:

Err: // Expected to return a value at the end of arrow function 

箭头功能是否总是必须返回值? 如果arrow函数必须返回一个值,这是什么原因?

例如,在这段特殊的代码中,如果没有通过条件,我不需要返回任何内容。无论如何,我的短毛狗朝我怒视着提到的错误。

const getCookie = name => {
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length == 2)
    return parts
      .pop()
      .split(';')
      .shift();
};

4 个答案:

答案 0 :(得分:2)

否,(箭头)函数不必返回任何东西,但是当函数不应该为空时(即期望返回值),从每个路径返回/返回某种默认值是一种很好的做法其他所有路径均失败。

const getCookie = name => {
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length == 2) {
    return parts
      .pop()
      .split(';')
      .shift();
  }

  // default return, for example:
  return false;
};

答案 1 :(得分:0)

箭头函数不必返回值。表达式需要返回值,而语句则不需要。也许尝试其他的linter。

答案 2 :(得分:0)

不。但是请注意,即使您不编写return,该函数也会默默地返回undefine。

答案 3 :(得分:0)

我会说:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

如果您在此处不使用块,则为隐式:

const implicit = i => i * 2;

但是如果您需要使用一个块,那么您需要添加一个返回值:

const explicit = (i) => {
  if(i > 10) {
    return i * 2;
  }
   return i;
}