検索

ホームページ  >  に質問  >  本文

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

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

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

フラグメント 1

リーリー

フラグメント 2

リーリー

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

大家讲道理大家讲道理2774日前541

全員に返信(2)返信します

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:35:08

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

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

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

    返事
    0
  • PHPz

    PHPz2017-05-19 10:35:08

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

    クリップ 1

    リーリー

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

    クリップ 2

    リーリー

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

    返事
    0
  • キャンセル返事