クロージャについて学び始めたばかりなので、理解できていないことがたくさんありました。図に示すように、コンソールに 未定義 が表示されるのはどうすればよいですか? return関数だけを実行したのに、実行結果が2つあるのはなぜですか?皆さん、詳しく説明してください~
未定義
业精于勤,荒于嬉;行成于思,毁于随。
次の 2 つのコードを繰り返して実行できます var result = f1(); 変数は関数を指します var result = f1(); 變量指向函數console.log(result()) 其實可以轉話為 f1()()即函數執行 f1()返回的函數,即f2() 所以首先會執行 f1()下的f2() 函數 再執行f1()所以首先console.log(n) 即1在執行函數f1()時候return f2 ,但由於函數沒有對返回值,所以打印出undefinedconsole.log(result())実際、f1()() の会話を変更できます
var result = f1();
console.log(result())
f1()()
f1()
f2()
f1()
console.log(n)
1
return f2
undefined
f1 が最初に実行されます ()
>console.log(n)
unknown
基本的に
f2 は値を返さないため、未定義です
console.log(result()) result() が f2() を呼び出すため、最初は 1 を出力します その後、result() には戻り値がないため、出力は未定義になります
http://www.liaoxuefeng.com/wi...
これを読むことをお勧めします
最初の結果=f1(); このとき、result=f2; 次に、結果であるf2を実行し、テストを実行していないため、nの値を出力します。は 1 なので、出力されるのは 1 です。 次に、 console.log(result()); を実行します。result() には戻り値がなく、未定義です。
console.log(console.log()) は未定義でなければなりません、兄貴
次の 2 つのコードを繰り返して実行できます
、つまり、var result = f1();
変数は関数を指しますvar result = f1();
變量指向函數console.log(result())
其實可以轉話為f1()()
即函數執行
f1()
返回的函數,即f2()
所以首先會執行f1()
下的f2()
函數 再執行f1()
所以首先
console.log(n)
即1
在執行函數
f1()
時候return f2
,但由於函數沒有對返回值,所以打印出undefined
console.log(result())
実際、f1()()
の会話を変更できますf1()
を実行することによって返される関数、つまりf2()
なので、f1 が最初に実行されます ()
の下のf2()
関数がf1()
を実行します🎜最初に>console.log(n)
は1
です🎜関数f1()
を実行すると、return f2
が返されますが、この関数は値を返さない場合、unknown
が出力されます 🎜基本的に
リーリーf2 は値を返さないため、未定義です
console.log(result())
result() が f2() を呼び出すため、最初は 1 を出力します
その後、result() には戻り値がないため、出力は未定義になります
http://www.liaoxuefeng.com/wi...
これを読むことをお勧めします
最初の結果=f1(); このとき、result=f2;
次に、結果であるf2を実行し、テストを実行していないため、nの値を出力します。は 1 なので、出力されるのは 1 です。 次に、 console.log(result()); を実行します。result() には戻り値がなく、未定義です。
console.log(console.log()) は未定義でなければなりません、兄貴