2017-08-04 15 views
3

javascriptの名前の関数呼び出し投げるエラー

var boo= function foo(){ 
 
    console.log("I am foo"); 
 
} 
 

 
boo(); // output: I am foo 
 
foo(); // output: Uncaught ReferenceError

私はjavascriptの名前の関数と少し混乱しています。上記のコードスニペットでfoo()関数呼び出しがエラーをスローしている理由を説明してください。事前に感謝します

+0

あなたは関数 'foo'の名前をつけていますが、変数' foo'が作成されるわけではありません。 – deceze

+1

var boo = function(){ console.log( "私はfoo"です); }。このようなjavascriptのネーミング機能を設定することができます。 – Sanil

+0

本当に私はそれが動作するようにコードを期待していませんでしたvar boo = function(){...};代入には無名関数が必要です。 – jidexl21

答えて

1
var boo= function foo(){ 

関数と関数式の間には明確な違いがあります。

あなたが持っているのは、変数に解決された式です。あなたが働くことを期待している方法は、関数式または関数式によって解決される変数である必要があります。ここでMDN docs

から

は、匿名関数式の一例である(名前は で使用されていない):

var myFunction = function() { 
    statements 
} 

順番に定義内の名前を提供することも可能です 名前付き関数式を作成するには

var myFunction = function namedFunction(){ 
    statements 
} 

名前付き関数式を作成する利点の1つは、 にエラーが発生した場合、スタックトレースに関数 という名前が含まれているため、エラーの原因を簡単に見つけることができます。

わかりましたが、両方の例がfunctionキーワードで始まらない場合があります。 関数で始まらない関数を含むステートメントは、関数式である です。

関連する問題