如何修复 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(){...}()) 就没有问题。那我误会了什么?
此外,如果有人有时间再回答一些问题:
- 'use strict' 是必要的还是多余的?
- 我用的是 iife,但它也是一个模块吗? (我想,我对这部分的理解非常错误)
- window.Test 这是导出变量 Test 的最佳方式吗?
预先感谢您的回答,山姆。
编辑:理解模块的好视频: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
声明它。
好久没用Javascript,想弄明白什么是es6,modules,iife
所以我写了一小段代码:
{
'use strict';
let version = '1.0.0';
function init(){
/* ... */
}
window.Test = {
version: version,
init: init
};
}
和 jshint returns 这个错误:函数声明不应该放在块中。使用函数表达式或将语句移动到外部函数的顶部。
但是,如果我使用 es5 格式 (function(){...}()) 就没有问题。那我误会了什么?
此外,如果有人有时间再回答一些问题:
- 'use strict' 是必要的还是多余的?
- 我用的是 iife,但它也是一个模块吗? (我想,我对这部分的理解非常错误)
- window.Test 这是导出变量 Test 的最佳方式吗?
预先感谢您的回答,山姆。
编辑:理解模块的好视频: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 variableTest
?
不,我建议用 var
声明它。