関数パラメータのデフォルト値が関数である状況について多くの混乱があります
例
Ruan Yifeng の es6 の紹介によると、関数のパラメーターがデフォルト値の場合、最初にパラメーターをラップするブロックレベルのスコープがあり、初期化が完了するとブロックレベルのスコープが消えることがわかっています。
パラメータのデフォルト値が設定されると、関数が宣言されて初期化されるときに、パラメータは別のスコープ (コンテキスト) を形成します。初期化が完了すると、このスコープは消えます。パラメーターのデフォルト値が設定されていない場合、この構文の動作は表示されません。
デフォルト値が通常の変数であることは理解できますが、ここでの出力がなぜ内部ではなく外部であるのかはまだわかりません
给我你的怀抱2017-07-05 11:11:13
回答者コードに基づく:
リーリーjs は字句スコープを採用しているため、関数がどこで呼び出されても、どのような形式であっても、関数の字句スコープは宣言時の位置によってのみ決定されます。
fk_compiler
被声明的作用域在全局,所以,它会去访问全局作用域中的foo
。答えは出てくるでしょう。
類似コード:
リーリー