JavaScript クロージャがどのように機能するかを正確に理解するのに苦労しています。これら 2 つの関数を見て、複数回呼び出すとまったく異なる結果が生成されるという違いを教えてください。
機能 1
var add = (function() {
var counter = 0;
return function() {
return counter += 1;
}
})();
console.log(add()); // result is 1
console.log(add()); // result is 2
console.log(add()); // result is 3
機能 2
function add() {
var counter = 0;
function() {
return counter += 1;
}
plus();
}
console.log(add()); // result is 1
console.log(add()); // result is 1
console.log(add()); // result is 1