javascript - 如果函数是值,为什么回调函数不能是变量?

标签 javascript callback

在函数式编程中,函数就是值。那么,如果函数是一个值,为什么我不能使用变量作为回调函数?

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/

相关文章:

javascript - 提升或回调问题?在 writeLog() 之前完成 for(loop) 但日志在完成之前写入

javascript - sqlite3 Node.js 数据库 Controller (this.dao.run 不是函数)

javascript - swagger-ui 响应示例作为定义中的引用

javascript - 从 asp.net mvc 调用 javascript

C++11 可变模板函数存储

android - 模块间通信的最佳实践

java - Java回调中使用接口(interface)的必要性是什么?

javascript - CSS 背景重复 : no-repeat; still repeating

javascript - 如何在通话结束后隐藏 "This tab is using your camera or microphone"

Javascript闭包,调用函数的不同方式