在函数式编程中,函数就是值。那么,如果函数是一个值,为什么我不能使用变量作为回调函数?
function myFunction() {}
作为回调。
myFunction = function() {}
不能用作回调。
下面的测试代码不起作用,我不知道为什么。
'use strict';
var myFunction;
window.addEventListener('click', myFunction);
myFunction = function() {
console.log('clicked');
}
<button id="click">click</button>
最佳答案
您错过了将变量分配给函数的部分。这会在使用事件监听器之后发生。当事件监听器获取变量时,变量的值为undefined
。
如果更改变量的赋值和使用,它可以正常工作。
Function declarations被提升,而作业保持原样。
'use strict';
var myFunction;
myFunction = function() {
console.log('clicked');
}
window.addEventListener('click', myFunction);
<button id="click">click</button>
关于javascript - 如果函数是值,为什么回调函数不能是变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487819/