如何修复Javascript es6中的“函数声明不应放在块中”错误?

时间:2019-07-15 17:21:50

标签: javascript ecmascript-6 es6-modules jshint iife

长时间不使用Javascript之后,我尝试了解什么是es6,模块和iife。

所以我写了一些代码:

{
    'use strict';

    let version = '1.0.0';

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

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

并且jshint返回此错误:函数声明不应放在块中。使用函数表达式或将语句移到外部函数的顶部。

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

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

  • “严格使用”是必要的还是多余的?
  • 我使用了一个iife,但是它也是一个模块吗? (我认为,我对这部分非常误解)
  • window.Test是导出变量Test的最好方法吗?

Sam,谢谢您的回答。

编辑:一个不错的视频,了解模块:https://www.youtube.com/watch?v=qJWALEoGge4

1 个答案:

答案 0 :(得分:1)

  

并且jshint返回此错误:函数声明不应放在块中。使用函数表达式或将语句移到外部函数的顶部。

这意味着jshint不了解ES6。或者,您可能需要对其进行配置才能做到。

  

'use strict'是必要的还是多余的?

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

  

我使用一个iife,但是它也是一个模块吗?

否,您这里没有使用IIFE。只是一个街区,但that's ok

它确实实现了模块模式(“创建可以访问私有范围内部的对象”),但它不是ES6模块。

  

window.Test是导出变量Test的最好方法吗?

否,我建议使用var进行声明。