SyntaxError: "use strict" not allowed in function with non-simple parameters - JavaScript 编辑

信息

Firefox:
句法错误: "use strict" 不允许在带默认参数的函数中
句法错误: "use strict" 不允许在带rest参数的函数中
句法错误: "use strict" 不允许在带解构参数的函数中

Chrome:
句法错误: 非法的'use strict'指令,在带有非简单参数列表的函数中

错误类型

SyntaxError.

哪里出错了?

在函数顶部直接写了 "use strict" ,而该函数拥有以下的参数其中之一:

根据ECMAScript规范,不允许在这些函数的顶部使用“use strict”指令。

示例

函数语句

在这种情况下,函数sum具有默认参数a = 1和b = 2:

function sum(a=1, b=2) {
  // SyntaxError: "use strict" not allowed in function with default parameter
  "use strict";
  return a + b;
}

如果这个函数应该处于 strict mode,并且整个脚本或封装函数也可以在严格模式下,可以移动 "use strict" 指令到函数之外:

"use strict";
function sum(a=1, b=2) {
  return a + b;
}

函数表达式

函数表达式可以使用另一种解决方法:

var sum = function sum([a, b]) {
  // SyntaxError: "use strict" not allowed in function with destructuring parameter
  "use strict";
  return a + b;
};

这可以转换为以下表达式:

var sum = (function() {
  "use strict";
  return function sum([a, b]) {
    return a + b;
  };
})();

箭头函数

如果箭头函数需要访问 this,则可以将箭头函数作为封闭函数来使用:

var callback = (...args) => {
  // SyntaxError: "use strict" not allowed in function with rest parameter
  "use strict";
  return this.run(args);
};

这可以转换为以下表达式:

var callback = (() => {
  "use strict";
  return (...args) => {
    return this.run(args);
  };
})();

也可以看看

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:49 次

字数:4314

最后编辑:6年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文