javascript - 在哪里可以定义函数
问题描述
已编辑:该表达式function foo() {return 20;}, foo()
原本是console.log
) 的单个参数。
这个:
console.log((function foo() {return 20;}, foo()));
不起作用,我得到ReferenceError
是因为foo
尚未定义。
为什么?
解决方案
console.log(function foo() {return 20;}, foo());
在此代码中,您将命名( foo
) 函数作为参数传递给console.log
. 知道了?您从未声明过function foo
,您只是将它作为参数传递。在 javascript 中,函数声明和函数表达式具有相同的语法,因此会造成混淆。
也就是说,传递一个命名(而不是匿名)函数几乎总是没用的。您的代码等效于:
console.log(function () {return 20;}, foo());
wherefunction () {return 20;}
是一个匿名函数,而不是一个命名函数。匿名函数在 JS 中非常普遍,因为命名函数表达式中的名称大多是无用的。
推荐阅读
- makefile - GNU Make:在单个命令调用中批处理多个目标
- python - Python 矢量图缺少标签
- actions-on-google - 技能关闭和谷歌打开食谱
- javascript - 在同一会话上运行或共存两个 React 应用程序
- python - 使用带有 windows auth 的 linux 中的 python 连接到远程 sql server 数据库
- python - 使用 RTL 语言编辑 QListWidget 项目时,部分输入被隐藏
- aem - 在哪个用例中,在 Dispatcher 中使用了多个渲染器
- sql - 没有key的sql server列序列化
- aws-lambda - 用于低吞吐量事件驱动架构的 Databricks 或 AWS Lambda
- vb.net - VB.net 2019 RDLC报告分享到客户端PC