Tho*_*s W 1 javascript module node.js codacy
我在我的项目中使用Codacy,并且收到一条警告,说我不应该使用稍后声明的变量,这是非常合乎逻辑的。然而,这对于构造函数来说应该可以正常工作。
这是我的主要文件结构:
/* Export */
module.exports = myObject; // this line
/* Import */
var otherObject = require('./otherObject');
function myObject(input) {
}
myObject.prototype = {
}
Run Code Online (Sandbox Code Playgroud)
在对象构造函数声明之前导出会出现任何问题吗?我应该将导出线移到构造函数下方吗?
由于函数提升,这将放入正确的函数:module.exports
module.exports = myObject;\nfunction myObject(input) {\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这将undefined放入module.exports没有错误):
module.exports = myObject;\nvar myObject = function (input) {\n};\nRun Code Online (Sandbox Code Playgroud)\n\n这会引发ReferenceError: myObject is not defined 异常,因为let:
module.exports = myObject;\nlet myObject = function (input) {\n};\nRun Code Online (Sandbox Code Playgroud)\n\n这也是因为const:
module.exports = myObject;\nconst myObject = function (input) {\n};\nRun Code Online (Sandbox Code Playgroud)\n\n另一方面,如果您将所有这些都按预期工作module.exports = myObject;最后,所有这些都将按预期工作 - 如果你遵循例如 Airbnb 编码风格,你无论如何都必须这样做:
或者如果您使用一些 linter 规则,例如此 ESLint 规则:
\n\n\n\n\n\n禁止早期使用(定义前禁止使用)
\n\n在 ES6 之前的 JavaScript 中,变量和函数声明被提升到作用域的顶部,因此可以在代码中的正式声明之前使用标识符。这可能会令人困惑,有些人认为最好在使用变量和函数之前先声明它们。
\n\n在 ES6 中,块级绑定(let 和 const)引入了一个 \xe2\x80\x9c 临时死区\xe2\x80\x9d,在该死区中,任何在声明之前访问该变量的尝试都会引发 ReferenceError 。
\n
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |