2017-03-18 8 views
0

私はいくつかのJSの課題を解決していましたが、矢印関数を使用すると期待どおりの結果になることに気付きました。 誰かがその違いを説明することができますか、または私はタイプミスを持つ可能性があります!ここでArrow関数VS Array.map()内の通常の関数

は、第一の溶液(作品)である:

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

+1

スペックを正しく覚えていれば、1行の矢印機能はその行が何であれ返す。通常の関数はデフォルトでそれをしません – Jhecht

+0

1行の矢印は暗黙のうちに 'return'関数を呼び出します - 通常の関数は明示的に' return'を必要とします – hackerrdave

答えて

3

returnキーワードiが欠けていますコールバック関数を使用しないでください。

Fat-arrow関数はデフォルトで値を返します。returnキーワードは組み込みです。通常の関数式から値を取得するには、それを返さなければなりません。

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

0

あなたは非矢印機能のための明示的なreturnを必要としています。 1行の矢印関数は暗黙的にその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 
関連する問題