関数を変数に直接代入することと関数を参照することの違いは何ですか?
例: フラグメント 1 とフラグメント 2
フラグメント 1
リーリーフラグメント 2
リーリーフラグメント 1 の onclick 関数は fn の変数へのアクセスを許可しますが、フラグメント 2 の onclick 関数は fn の変数へのアクセスを許可しません。フラグメント 2 の click は fn の外側で定義されているため、そう思うのです。 fn にアクセスできないということは、フラグメント 2 の onclick への割り当ては、実際にはコピーではなく参照であるということですか?
いいえ、いいえ、メソッドを呼び出したりパラメータを渡したりするわけではないので、これら 2 つの例の核心は参照/コピーの問題ではありません
これはスコープ(プロトタイプチェーン)の問題です
変数にはスコープごとに異なるアクセス権があります:
子スコープは親スコープにアクセスできます
親スコープは子スコープにアクセスできません
同じレベルのスコープは相互にアクセスできません
変数スコープについてもっと学ぶ必要があるかもしれません。jsのスコープは定義時にすでに決定されています。
クリップ 1
リーリーbox にバインドされた
onclick
コールバックは fn の関数内にあるため、その内部のすべてのローカル変数はコールバックによってアクセスできます。クリップ 2
リーリーclick
方法在fn函数外部,与之同级,由于定义时,click
はまだ fn 内にないため、その内部スコープにはアクセスできません。