Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复';函数声明不应放在块';Javascript es6中的错误?_Javascript_Ecmascript 6_Es6 Modules_Jshint_Iife - Fatal编程技术网

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

如何修复';函数声明不应放在块';Javascript es6中的错误?,javascript,ecmascript-6,es6-modules,jshint,iife,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返回这个错误:函数声明不应该放在块中。

在很长一段时间没有使用Javascript之后,我试图理解什么是es6、模块和iife

所以我写了一段代码:

{
    'use strict';

    let version = '1.0.0';

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

    window.Test = {
        version: version,
        init: init
    };
}
jshint返回这个错误:函数声明不应该放在块中。使用函数表达式或将语句移动到外部函数的顶部

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

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

  • “严格使用”是必要的还是多余的
  • 我使用生命,但它也是一个模块吗?(我想,我对这部分有很大的误解)
  • 导出变量测试的最佳方法是什么
萨姆,提前谢谢你的回答

编辑:了解模块的好视频:

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

这意味着jshint不理解ES6。或者,您可能需要对其进行配置,使其能够运行

“严格使用”
是必要的还是多余的

这里使用的方法不起作用,因为指令序言只能放在函数中(或模块或脚本的开头),而不能放在块中

我使用生命,但它也是一个模块吗

不,您在这里没有使用。只是一个街区,但是

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

window.Test
导出变量
Test
的最佳方法是什么


不,我建议用
var

“我使用iife”来声明它-不,在你的例子中没有iife。你用这段代码做什么?它是由其他东西导入的,还是init()做了你想做的一切?为什么它不是一种生活?看到这些网站后,我觉得情况就是这样:我在html页面中使用它,函数init只是一个例子,我有很多函数要放在这个脚本中,我想通过使用测试变量将它像API一样使用。我想,我现在明白了。谢谢