javascript - 是否必须将(非回调)函数表达式分配给变量?

标签 javascript

函数表达式是否必须分配给变量(在常规上下文中使用时)?我知道对于初学者来说,当它们是回调(作为另一个函数的参数传递)或在 IIFE 中使用时,它们不需要。

如果他们这样做,他们的 MDN 似乎是 page会使这个在这个描述中更加突出和居中:

A function expression is very similar to and has almost the same syntax as a function statement (see function statement for details). The main difference between a function expression and a function statement is the function name, which can be omitted in function expressions to create anonymous functions.

此外,在同一个 MDN 页面上,变量赋值包含在语法中:

> var myFunction = function [name]([param1[, param2[, ..., paramN]]]) { 
> statements };

在他们的 chapter在函数上,不包括变量赋值(不要介意丢失的分号):

function [name]([param[, param[, ... param]]]) {
   statements
}

最佳答案

它们不必分配给变量。例如,这里有一个函数被评估为不是回调的表达式:

(
  () => void 0
);

这只是一个没有做任何事情的孤立表达式,有点像

5;

也就是说,虽然以上内容技术上是合法的,但它们毫无用处。函数表达式不必被使用(例如对变量的赋值或作为参数),但如果不使用,就没有多大意义。

关于javascript - 是否必须将(非回调)函数表达式分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50960144/

相关文章:

javascript - 在线 IDE 中出现错误 'Firebase is not defined'

javascript - 解析beforeSave()云代码函数不起作用

javascript:检查对象是否具有特定元素或属性的最佳方法?

javascript - Jquery focus(in|out) 以奇怪的顺序运行

javascript - History back() 方法不适用于 Internet Explorer

javascript - 20thingssilearned 使用 HTML5 进行双面翻页

javascript - React 在第一个方法触发后不改变状态

javascript - AngularJS 过滤器刷新占位符

javascript - 应用新运算符时有什么区别?

javascript - 局部变量不覆盖同名参数?