Expression closures is a SpiderMonkey-specific feature, and will be removed at some point. For future-facing usages, consider using {{jsxref("Functions/Arrow_Functions", "Arrow Functions")}}
{{jsSidebar("Operators")}}
Summary
The Expression closures is a shorthand for writing simple function.
Syntax
function [name]([param1[, param2[, ..., paramN]]]) expression
Parameters
-
name
- The function name. Can be omitted, in which case the function is anonymous. The name is only local to the function body.
-
paramN
- The name of an argument to be passed to the function. A function can have up to 255 arguments.
-
expression
- The expression which comprise the body of the function.
Description
This addition is nothing more than a shorthand for writing simple functions, giving the language something similar to a typical Lambda notation.
JavaScript 1.7 and older:
function(x) { return x * x; }
JavaScript 1.8:
function(x) x * x
This syntax allows you to leave off the braces and 'return' statement - making them implicit. There is no added benefit to writing code in this manner, other than having it be syntactically shorter.
Examples
A shorthand for binding event listeners:
document.addEventListener("click", function() false, true);
Using this notation with some of the array functions from JavaScript 1.6:
elems.some(function(elem) elem.type == "text");
Browser compatibility
{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{ CompatNo() }} | {{ CompatVersionUnknown() }} | {{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{ CompatNo() }} | {{ CompatNo() }} | {{ CompatVersionUnknown() }} | {{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} |
See also
- {{jsxref("Functions_and_function_scope", "Functions and function scope")}}
- {{jsxref("Function")}}
- {{jsxref("Statements/function", "function statement")}}
- {{jsxref("Operators/function", "function expression")}}
- {{jsxref("Statements/function*", "function* statement")}}
- {{jsxref("Operators/function*", "function* expression")}}
- {{jsxref("GeneratorFunction")}}