2017-01-10 12 views
0

は、次のコードスニペットは、にReferenceErrorがスローされます。以下のスニペットは完全に正常に動作しながらselectTenがなぜvar name = function(){...}の形式の関数がES5で吊り上げられていないのですか?

var select = _.pipe(
     selectTen, 
     fetchUrls, 
     awaitUrlData, 
     connectToLoad 
    ) 

    var selectTen = _.partialRight(selectItems, [4]) 
    var connectToLoad = _.partialRight(connect, [load]); 

が定義されていない:私はangularjsプロジェクトの一環として、このコードを実行しています

var selectTen = _.partialRight(selectItems, [4]) 
    var connectToLoad = _.partialRight(connect, [load]); 

    var select = _.pipe(
     selectTen, 
     fetchUrls, 
     awaitUrlData, 
     connectToLoad 
    ) 

バニラ(ES5)JavaScriptを使用して.jsファイルがindex.htmlのタグに含まれています。モジュールローダーが使用されていません

_.表記はlodashの関数プログラミングライブラリの一部です。彼らは関数を返し、function(param){...}と置き換えることができると言っても過言ではありません。

なぜ、selectTenおよびconnectToLoad関数が最初のスニペットでホストされていないのですか?

+0

@SurenSrapyanこの質問とあなたがマークした質問との相関関係は表示されません。 –

+2

なぜ課題が吊り上げられるべきですか? 'const'はES5 btwの一部ではありません。 – zeroflagL

+1

* ...バニラ(ES5)JavaScript * - しかし、ES5には 'const'宣言がありませんでしたか? – Pointy

答えて

2

let同様の宣言、const宣言は、その外側のブロックにスコープされている掲揚されるだろうブロックの先頭に宣言されています。ただし、宣言が実際に表示されるコード内のポイントまでは値を使用できません。

ブロックの開始点と宣言が現れる点との間のギャップは、「一時的な不感地帯」と呼ばれます(劇的に)。

1

関数は定義されていないため、値として関数リテラルを持つ定数です。

あなたが例えば操作を行いたい場合は、次の

function selectTen(selectedItems) { return _.partialRight(selectedItems, [4]); } 

その後、彼らは、変数(まあ、定数)であるかのように

+0

これはうまくいくかもしれませんが、本当にその質問には答えません。 @ Pointyの答えを見てください。 –

関連する問題