0

これはjsフィドルからのリンクです

次のような js コードがあります。

function makeSizer(size) {
  return function() {
    document.body.style.fontSize = size + 'px';
  };
}

var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);

document.getElementById('size-12').onclick = size12;
document.getElementById('size-14').onclick = size14;
document.getElementById('size-16').onclick = size16;  document.getElementById('size-16').onclick = size16;

最初の質問は 2 つあります。この余分な変数を使用する利点は何ですか。

var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);

あなたがただ書くことができるとき

document.getElementById('size-12').onclick = makeSizer(12)

2 つ目は、なぜ関数を次のように書くのかということです。

function makeSizer(size) {  document.body.style.fontSize = size + 'px';  }

すべてが機能しなくなります。これは重複していて、閉鎖に関するいくつかの投稿があることは知っていますが、役に立ちません

4

2 に答える 2

0

プロパティには、イベントのonclick発生時に実行される関数が必要です。

この関数は、マウス イベントを引数として受け取ります。ただし、あなたの場合、関数はフォントを設定する必要があるサイズを知る必要があります。

これは、その場で関数を作成し、クロージャーを使用してサイズをキャプチャすることで解決されます。

于 2013-10-11T11:33:01.417 に答える