--- title: 'Warning: expression closures are deprecated' slug: Web/JavaScript/Reference/Errors/Deprecated_expression_closures tags: - JavaScript - 警告 translation_of: Web/JavaScript/Reference/Errors/Deprecated_expression_closures ---
Warning: expression closures are deprecated
警告。JavaScript 引擎不会停止运行。
非标准化的表达式闭包语法(简写函数语法)已被废弃,不应该再被使用。该语法将会在 {{bug(1083458)}} 中全部移除,到时候用到该语法的脚本程序会报 SyntaxError 错误。
表达式闭包从函数声明或者对象方法定义中省略了花括号或是 return 语句。
var x = function() 1; var obj = { count: function() 1 };
将非标准化的表达式闭包语法转换成标准 ECMAScript 语法,可以添加花括号以及 return 语句。
var x = function() { return 1; } var obj = { count: function() { return 1; } };
另外,你可以选择使用箭头函数:
var x = () => 1;
表达式闭包还会出现在 getter 与 setter 中,例如:
var obj = { get x() 1, set x(v) this.v = v };
根据 ES2015 中对于方法定义的规定,上述写法可以转换成如下形式:
var obj = { get x() { return 1 }, set x(v) { this.v = v } };