我正在解决一些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
答案 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