Array.map()中的箭头函数VS正常函数

时间:2017-03-18 22:52:21

标签: javascript arrow-functions

我正在解决一些JS挑战,并注意到当使用箭头函数时,结果如预期的那样,当我使用普通函数尝试相同的代码时,它没有。 有人可以解释这个差异,或者我可能会输错!

这是第一个解决方案(有效):

function titleCase(str) {
    str = str.split(' ').map(i =>  i[0].toUpperCase() + i.substr(1).toLowerCase()).join(' ')
    return str;
  }
   console.log(titleCase("I'm a liTTle tea pot")); // I'm A Little Tea Pot

具有正常功能的第二个解决方案(返回空字符串):

function titleCase2(str) {
    str = str.split(' ').map(function(i, index){ i[0].toUpperCase() + i.substr(1).toLowerCase()}).join(' ')
    return str;
  }
   console.log(titleCase2("I'm a liTTle tea pot")); // empty string

Screenshot of my console

You can use My Plunker here

2 个答案:

答案 0 :(得分:3)

您错过了回调函数中的df_comp = sqlContext.sql("SELECT a.* FROM tab1 a LEFT OUTER JOIN tab2 b on a.id==b.id WHERE b.id IS null \ UNION ALL \ SELECT b.* FROM tab1 a RIGHT OUTER JOIN tab2 b on a.id==b.id WHERE a.id IS null \ UNION ALL \ SELECT b.* FROM tab2 b JOIN tab1 a On b.id==a.id or b.RCPNT_ID != a.RCPNT_ID") 关键字。

Fat-arrow函数默认返回一个值,return关键字是内置的。要从正常函数表达式中获取值,您必须返回它。



return




答案 1 :(得分:0)

对于非箭头功能,您需要明确return。 1行箭头函数隐式返回该行的结果。

function titleCase2(str) {
  return str.split(' ').map(function(i, index){ return i[0].toUpperCase() + i.substr(1).toLowerCase()}).join(' ')
}
console.log(titleCase2("I'm a liTTle tea pot")); // I'm A Little Tea Pot