未捕获的SyntaxError:在严格模式代码中,函数只能在顶层或立即在另一个函数中声明
Uncaught SyntaxError: In strict mode code, functions can only be declared at top level or immediately within another function
你好,当我运行这个项目在开发模式(grunt服务器)https://github.com/kennethlynne/generator-angular-xl一切都很好,但当我运行它在生产模式(grunt构建)我得到一个'
Uncaught SyntaxError:在严格模式代码中,函数只能是在顶层声明或立即在另一个函数中声明
有人知道发生了什么事吗?谢谢你,
p。我发布了一个项目的链接,而不是代码,因为JS被分割成许多文件。
这就是错误信息所说的:
函数只能在顶层声明,或者直接在另一个函数
中声明
不能将函数声明放在任何其他块中,如if语句或for循环。
的例子:
'use strict';
function some() {
function okay() {
}
let x = 1;
function no_problem() {
}
if (x == 1) {
function BOOM() { // <- wrong!
}
}
}
正如上面有人建议的那样,您可以取消注释'use strict';
部分,或者更好的是,更改函数语法
代替
function funcName (param) { }
使用funcName = function(param) {};
我解决这个问题的方法是在最终的最小化脚本中删除jquery上面的'use strict'
。另一种方法是将jQuery版本更改为没有严格错误的版本
EDIT:毕竟这是1.11版本的jQuery缩小错误,一个简单的修复方法是去你的Grunt文件并注释掉
行banner: "'use strict';'n"
除了正确的答案之外,这个在某些特定的场景中也可能是FireFox中的一个错误。
在一个用户的机器上出现了这个错误消息。在JavaScript文件中,有一个use strict
行在方法下面,抛出这个错误(不应该受此影响)
这恰好是FireFox 45.9.0版本的一个问题(也可能是旧版本)。更新到最新版本(目前是52.4)解决了这个问题。
有趣的是,我的是,因为{
被放在一个新的行,但我返回一个对象,所以我改变了
"use strict";
var funcName1 = function(){
/* some code*/
return
{ // note this bracket
funcName2:function(){/* some code*/},
};
}
"use strict";
var funcName1 = function(){
/* some code*/
return { // to this, same line
funcName2:function(){/* some code*/},
};
}
相关文章:
- 直接在函数声明上使用function.prototype.bind
- 可以Resharper在我的javascript函数声明中添加分号
- 此行是否包含函数声明
- 函数声明与函数表达式之间的性能差异
- 为什么在javascript函数声明中使用逻辑运算符
- 函数声明未定义-原因
- JavaScript执行从函数声明开始,而不是从$(document).ready()开始
- 杰辛特 |传递默认设置 |函数声明和“this”
- 未知的 JavaScript 函数声明模式
- JavaScript 中的函数声明
- 在函数声明而不是运行时分析所有变量
- 命名函数声明有什么好处吗
- 将一个简单的函数声明形成JavaScript中的闭包
- 返回语句后的函数声明全局变量不会被覆盖
- (this)在函数声明之后
- 为什么使用 ||在变量函数声明中
- 为什么要将函数声明分配给命名变量
- 具有相同参数的 Javascript 函数声明
- 从性能的角度来看,函数声明与表达式
- 为什么 Mozilla Javascript 调试器的断点会捕捉到函数声明