Expression closures

非标准,不要使用!
闭包表达式语法是废弃的 SpiderMonkey 特定的特性,并且即将被移除。为了长远使用,考虑使用箭头函数

表达式闭包是定义简单函数的一种便捷方式。

语法

function [name]([param1[, param2[, ..., paramN]]])
   expression

参数

name
函数名。函数名可以省略不写,称为匿名函数。函数名仅在函数体有效。
paramN
形参名。一个函数最多可以有255个参数。
expression
构成函数体的表达式。

描述

这一附加特性只是编写简单函数的快捷方式,让语言更类似通常的 Lambda 标记

JavaScript 1.7 以上:

function(x) { return x * x; }

JavaScript 1.8:

function(x) x * x

该语法支持省略花括号和'return'语句。使用这种编码的目的只是为了在句法上使得代码更加简化,但除此之外没有其他好处。

示例

一种绑定事件监听器的便捷方式:

 document.addEventListener("click", function() false, true);

在 JavaScript 1.6 中的一些数组函数中使用该标记:

elems.some(function(elem) elem.type == "text");

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 未实现 (Yes) 未实现 未实现 未实现
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 未实现 未实现 (Yes) 未实现 未实现 未实现

兼容性注意事项

  • 自 Gecko / SpiderMonkey 45 (Firefox 45 / Thunderbird 45 / SeaMonkey 2.42)起,使用表达式闭包时会添加控制台警告(bug 995610)。
  • The expression closure syntax is not allowed with async functions and will throw a SyntaxError starting with Firefox 55.

另见

文档标签和贡献者