【发布时间】:2016-02-05 20:00:02
【问题描述】:
我遵循了一个关于如何使用 javascript 构建计算器的在线教程。该代码使用 for 循环遍历计算器的所有按钮和 2 个函数来添加数字并进行计算。 代码如下:
for (var i = 0; i < buttons.length; i += 1) {
if (buttons[i].innerHTML === "=") {
buttons[i].addEventListener("click", calculate(i));
}
else {
buttons[i].addEventListener("click", addValue(i));
}
}
function addValue(i) {
return function() {
if (buttons[i].innerHTML === "~" ) {
result.innerHTML += "/";
}
else if (buttons[i].innerHTML === "x") {
result.innerHTML += "*";
}
else {
result.innerHTML += buttons[i].innerHTML;
}
};
}
function calculate(i) {
return function() {
result.innerHTML = eval(result.innerHTML);
};
}
我想问为什么有两个函数 addValue 和 calculate 返回函数?如果我删除退货,代码将不起作用。为什么?
【问题讨论】:
-
简单来说,addEventListener函数需要一个监听器。文档see here 将侦听器定义为“当指定类型的事件发生时接收通知的对象。这必须是实现 EventListener 接口的对象,或者只是一个 JavaScript 函数。”。
标签: javascript function for-loop