如果函数被事件侦听器调用,是否可以返回函数的结果?我试了很多方法,但都不管用。令我惊讶的是,没有太多关于它的信息可以帮助我。我想传入当前分数,当事件发生时将其增加一,然后返回。显然,我下面所做的将不起作用,因为a(没有存储return语句,b(它是由事件侦听器调用的。我唯一要做的就是更改函数中的全局变量。我知道如果封装在IIFE或它自己的闭包中,那不会那么有害,但我仍然不想养成这样做的习惯。有没有将分数增加1,而不直接引用函数中的全局分数变量,感谢所有
const btn = document.querySelector('#btn');
let score = 0;
btn.addEventListener('click', function () {
increaseScore(score); // passing in the current score varialble
})
function increaseScore(currentScore) {
currentScore++;
return currentScore; // there is nowhere to return this!!
}
诀窍是你需要绑定上下文(这个(
someMethod.bind(this);
const btn = document.querySelector('#btn');
const scoreBtn = document.querySelector('#score');
let score = 0;
btn.addEventListener('click', function() {
event.preventDefault();
someMethod.bind(this);
score = someMethod(score);
});
scoreBtn.addEventListener('click', function() {
event.preventDefault();
console.log(score);
});
function someMethod(cur) {
return cur + 1;
}
<button id="btn">Update Score</button>
<button id="score">Show Score</button>