我正在尝试使用匿名函数来练习闭包和范围。
有4个HTML按钮,点击后,我希望javascript识别它们是什么按钮编号,以及它们被点击的次数。
我不确定这是否正确设置。
期待您的意见和建议。以下是代码。在此先感谢!!
var buttons = document.querySelectorAll("button");
buttons.forEach(function(button){
button.addEventListener("click", function(){
return (function(input){
var increment = 0;
return function(){
increment++;
alert("button " + input.textContent + ":" + " has been clicked " + increment + " times." );
}
})(button);
});
});
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
答案 0 :(得分:2)
当然,匿名函数可以返回其他函数。职能是js中的一等公民。除this
属性外,每个嵌入式函数都可以访问包络函数的上下文。您可以使用四个forEach函数的上下文来存储增量数。当你从一个事件监听器返回一些东西时,我不知道这个返回是否曾被用于某个地方。它可能只是存在功能。
var buttons = document.querySelectorAll("button");
buttons.forEach(function(button){
var increment = 0;
button.addEventListener("click", function(event){
increment++;
alert("button " + event.currentTarget.innerHTML + ":" + " has been clicked " + increment + " times." );
}
);
});
&#13;
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
&#13;