语法错误:在具有非简单参数的函数中不允许使用“use strict”

JavaScript异常““使用严格”函数中不允许出现““使用严格”指令用在函数的顶部默认参数,rest参数,或破坏参数.

消息

语法错误:具有非简单参数列表(基于V8)的函数中存在非法的“use strict”指令语法错误:在带有默认参数的函数中不允许使用“use strict”(Firefox)SyntaxError:带有rest参数的函数中不允许使用“use strict”(Firefox)SyntaxError:带析构化参数的函数中不允许使用“use strict”(Firefox)语法错误:在具有非简单参数列表的函数内不允许使用“use strict”指令。(野生动物园)

错误类型

出了什么问题?

A类“使用严格”指令写在有一个指令的函数的顶部以下参数中的一个:

A类“使用严格”根据,不允许在此类函数的顶部使用指令ECMAScript规范。

示例

函数语句

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

js型
函数和(a=1,b=2){//语法错误:在带有默认参数的函数中不允许使用“use strict”“使用严格”;返回a+b;}

如果函数应位于严格模式、和整个脚本或封闭函数也可以处于严格模式,您可以移动“使用严格”函数外部的指令:

js型
“使用严格”;函数和(a=1,b=2){返回a+b;}

函数表达式

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

js型
常数和=函数和([a,b]){//语法错误:在具有析构化参数的函数中不允许使用“use strict”“使用严格”;返回a+b;};

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

js型
常量和=(函数(){“使用严格”;返回函数和([a,b]){返回a+b;};})();

箭头函数

如果箭头功能需要访问变量,可以使用箭头函数作为封闭函数:

js型
常量回调=(…args)=>{//语法错误:在带有rest参数的函数中不允许使用“use strict”“使用严格”;返回this.run(args);};

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

js型
常量回调=(()=>{“使用严格”;return(…args)=>{返回this.run(args);};})();

另请参见