Warning: expression closures are deprecated

Our volunteers haven't translated this article into عربي yet. Join us and help get the job done!
You can also read the article in English (US).

Message

Warning: expression closures are deprecated

Error Type

Warning. JavaScript execution won't be halted.

What went wrong?

The non-standard expression closure syntax (shorthand function syntax) is deprecated and shouldn't be used anymore. This syntax will be removed entirely in bug 1083458 and scripts using it will throw a SyntaxError then.

Examples

Deprecated syntax

Expression closures omit curly braces or return statements from function declarations or from method definitions in objects.

var x = function() 1;

var obj = { 
  count: function() 1
};

Standard syntax

To convert the non-standard expression closures syntax to standard ECMAScript syntax, you can add curly braces and return statements.

var x = function() { return 1; }

var obj = {
  count: function() { return 1; }
};

Standard syntax using arrow functions

Alternatively, you can use arrow functions:

var x = () => 1;

Standard syntax using shorthand method syntax

Expression closures can also be found with getter and setter, like this:

var obj = {
  get x() 1,
  set x(v) this.v = v
};

With ES2015 method definitions, this can be converted to:

var obj = { 
  get x() { return 1 }, 
  set x(v) { this.v = v } 
};

See also

Document Tags and Contributors

 Contributors to this page: fscholz
 Last updated by: fscholz,