関数を変数に直接代入することと関数を参照することの違いは何ですか?
大家讲道理
大家讲道理 2017-05-19 10:33:08
0
2
547

関数を変数に直接代入することと関数を参照することの違いは何ですか?

例: フラグメント 1 とフラグメント 2

フラグメント 1

リーリー

フラグメント 2

リーリー

フラグメント 1 の onclick 関数は fn の変数へのアクセスを許可しますが、フラグメント 2 の onclick 関数は fn の変数へのアクセスを許可しません。フラグメント 2 の click は fn の外側で定義されているため、そう思うのです。 fn にアクセスできないということは、フラグメント 2 の onclick への割り当ては、実際にはコピーではなく参照であるということですか?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(2)
我想大声告诉你

いいえ、いいえ、メソッドを呼び出したりパラメータを渡したりするわけではないので、これら 2 つの例の核心は参照/コピーの問題ではありません

これはスコープ(プロトタイプチェーン)の問題です

変数にはスコープごとに異なるアクセス権があります:
子スコープは親スコープにアクセスできます
親スコープは子スコープにアクセスできません
同じレベルのスコープは相互にアクセスできません

いいねを押す +0
PHPzhong

変数スコープについてもっと学ぶ必要があるかもしれません。jsのスコープは定義時にすでに決定されています。

クリップ 1

リーリー

box にバインドされた onclick コールバックは fn の関数内にあるため、その内部のすべてのローカル変数はコールバックによってアクセスできます。

クリップ 2

リーリー

click方法在fn函数外部,与之同级,由于定义时,click はまだ fn 内にないため、その内部スコープにはアクセスできません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート