如何修复 Javascript es6 中的 'Function declarations should not be placed in blocks' 错误?

How to fix 'Function declarations should not be placed in blocks' error in Javascript es6?

好久没用Javascript,想弄明白什么是es6,modules,iife

所以我写了一小段代码:

{
    'use strict';

    let version = '1.0.0';

    function init(){
        /* ... */
    }

    window.Test = {
        version: version,
        init: init
    };
}

和 jshint returns 这个错误:函数声明不应该放在块中。使用函数表达式或将语句移动到外部函数的顶部。

但是,如果我使用 es5 格式 (function(){...}()) 就没有问题。那我误会了什么?

此外,如果有人有时间再回答一些问题:

预先感谢您的回答,山姆。

编辑:理解模块的好视频:https://www.youtube.com/watch?v=qJWALEoGge4

And jshint returns this error: Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.

也就是说jshint不理解ES6。或者,您可能需要对其进行配置才能实现。

'use strict' is necessary or redundant?

您在此处使用的那个不起作用,因为指令序言只能放在函数中(或模块或脚本的开头),而不能放在块中。

I use an iife, but is it a module too?

不,您没有使用 IIFE here. It's just a block, but

它确实实现了模块模式("create an object with access to privately-scoped internals"),但它不是 ES6 模块。

window.Test is it the best way to export my variable Test?

不,我建议用 var 声明它。