Uncaught SyntaxError:在严格模式代码中,函数只能在顶层声明或在另一个函数中立即声明

Ste*_*hrs 17 javascript strict angularjs

你好,当我在开发者模式下运行这个项目时(grunt服务器)https://github.com/kennethlynne/generator-angular-xl一切正常但是当我在生产模式下运行它(grunt build)时我得到一个`

Uncaught SyntaxError:在严格模式代码中,函数只能在顶层声明或在另一个函数中立即声明

任何人都知道发生了什么事吗?谢谢,

PS.我发布了一个项目的链接而不是代码,因为JS在许多文件中被拆分.

Ber*_*rgi 19

这正是错误消息所说的内容:

函数只能在顶级声明或在另一个函数中立即声明

不能将函数声明放在任何其他块中,例如if语句或for循环.

例:

'use strict';

function some() {

    function okay() {
    }

    let x = 1;

    function no_problem() {
    }

    if (x == 1) {

        function BOOM() {   // <- wrong!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是关于*嵌套级别*,而不是关于功能代码的顶部.变量声明不会打开块.仍然,你可以链接该文件,以便我可以仔细检查? (3认同)

小智 7

正如上面提到的那样,您可以取消注释该'use strict';部分,甚至更好地更改您的函数语法

代替

function funcName (param) { }
Run Code Online (Sandbox Code Playgroud)

使用

funcName = function(param) {}; 
Run Code Online (Sandbox Code Playgroud)


Ste*_*hrs 6

我解决问题的方法是删除'use strict'最终缩小脚本中jquery上方的内容.另一种方法是将jQuery版本更改为没有严格错误的版本

编辑:毕竟它是版本1.11上的jQuery缩小错误,一个简单的解决方法是转到您的Grunt文件并注释掉该行

banner: "'use strict';\n"
Run Code Online (Sandbox Code Playgroud)