2017-01-07 8 views
-2

文字列を関数にパラメータとして渡すと、undefinedが返されます。何故ですか?関数パラメータとして渡される文字列が定義されていません

let a = 'b'; 

let test = (a) => console.log(a); 

test(); // undefined 
+0

パラメータリストの 'a'は、より高いスコープの' let a = 'b''を陰にします。スコープがリンクされた複製でJavaScriptでどのように機能するのかを読んでください。 –

答えて

2

test();に電話すると、()の間に何も入れていないので、パラメータを渡すことはありません。

あなたは((a) =>で)testを定義したときに、同じ名前を持つマスクグローバル変数をローカル変数aを作成しました。

aを渡すには実際にそれを渡す必要があります:test(a)

2

なぜですか?

引数を渡さないためです。次のことを試してみてください。

test(a); 

次の定義:

let test = (a) => console.log(a); 

には、次のようなものです:

function test(a){ 
    console.log(a); 
} 

ですから、testを呼び出すときに、aの値は次のようになり任意の引数を渡すことなく、未定義。

関連する問題