私はMozilla開発者サイトのクロージャの説明を読んでいて、少し苦労しています。 MozillaのWebサイトから次のコードを見てください。私はそれがどのように機能するのか理解していますが、コメントの下のコードも機能するはずです。 18と20をクリックするとなぜ機能しないのですか?JavaScript - クロージャ
/* mozilla dev code */
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;
/* end of mozilla dev example */
/* my code starts */
/* see - no inner function below */
function makeS(size) {
document.body.style.fontSize = size + 'px'
}
/* Let's see if that works */
var size18 = makeS(18);
document.getElementById('size-18').onclick = size18;
/* What about that? */
document.getElementById('size-20').onclick = makeS(20);
なぜ
CodePen: http://codepen.io/wasteland/pen/qqoooW
JavaScriptのクロージャはどのように機能しますか?(http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) – s3raph86