我最近开始维护其他人的JavaScript代码.我正在修复错误,添加功能,并尝试整理代码并使其更加一致.
以前的开发人员使用两种声明函数的方法,如果背后有原因,我就无法解决.
这两种方式是:
var functionOne = function() {
// Some code
};
Run Code Online (Sandbox Code Playgroud)
function functionTwo() {
// Some code
}
Run Code Online (Sandbox Code Playgroud)
使用这两种不同方法的原因是什么?每种方法的优缺点是什么?有一种方法可以通过一种方法完成,而另一种方法无法完成吗?
我已经玩ES6一段时间了,我注意到虽然声明的变量var按预期提升了......
console.log(typeof name); // undefined
var name = "John";
Run Code Online (Sandbox Code Playgroud)
... 用吊装声明let或const似乎有一些问题的变量:
console.log(typeof name); // ReferenceError
let name = "John";
Run Code Online (Sandbox Code Playgroud)
和
console.log(typeof name); // ReferenceError
const name = "John";
Run Code Online (Sandbox Code Playgroud)
这是否意味着变量声明let或未声明const?这是怎么回事?这个问题let和const这个问题有什么区别吗?
导出一个 es6 默认类与其定义内嵌与在其定义后的文件末尾之间有什么区别?
以下是我在 React 教程中遇到的两个示例。
前任。1:内联类
export default class App extends React.Component {
// class definition omitted
}
Run Code Online (Sandbox Code Playgroud)
前任。2:文件结束
class App extends React.Component [
// class definition omitted
}
export default App; // is this different somehow?
Run Code Online (Sandbox Code Playgroud)
如果没有区别,那么第一个示例似乎更高效和简洁。
我理解,使用ES6模块导出时,导出的内容与导入的内容之间会发生绑定,因此当导出的变量发生更改时,导入的变量将演示该更改.
但是,我还读到导入的变量在某些情况下只携带绑定到导出的变量.
我的具体问题是在以下两种情况下导出变量的绑定方式是否存在差异......
// Scenario #1
let a = 5;
export default a;
// Scenario #2
let a = 5;
export { a as default };
Run Code Online (Sandbox Code Playgroud) 我有一个名为的模块fooModule.在这个模块中,我导入fooModule(本身):
import * as fooModule from './fooModule';
export function logFoo() {
console.log(fooModule)
}
Run Code Online (Sandbox Code Playgroud)
当logFoo()被调用时,我可以看到所有的fooModule的出口.这是如何运作的?
export default async function () {
};
Run Code Online (Sandbox Code Playgroud)
要么
export default async () => {
};
Run Code Online (Sandbox Code Playgroud)
导出默认函数时首选哪一个?为什么?
javascript ×6
ecmascript-6 ×4
es6-modules ×3
async-await ×1
const ×1
function ×1
hoisting ×1
idioms ×1
let ×1
node.js ×1
syntax ×1
webpack ×1