我最近开始维护其他人的JavaScript代码.我正在修复错误,添加功能,并尝试整理代码并使其更加一致.
以前的开发人员使用两种声明函数的方法,如果背后有原因,我就无法解决.
这两种方式是:
var functionOne = function() {
// Some code
};
Run Code Online (Sandbox Code Playgroud)
function functionTwo() {
// Some code
}
Run Code Online (Sandbox Code Playgroud)
使用这两种不同方法的原因是什么?每种方法的优缺点是什么?有一种方法可以通过一种方法完成,而另一种方法无法完成吗?
有人可以在OOP上下文中提供方法与函数的简单解释吗?
以下代码行之间有什么区别?
//Function declaration
function foo() { return 5; }
//Anonymous function expression
var foo = function() { return 5; }
//Named function expression
var foo = function foo() { return 5; }
Run Code Online (Sandbox Code Playgroud)
对类似问题(var functionName = function(){} vs function functionName(){})的响应是不是完全正确?
我希望能在javascript中说出类似的内容:
"a".distance("b")
Run Code Online (Sandbox Code Playgroud)
如何将自己的距离函数添加到字符串类?
根据ES6速记初始化,以下两种方法是相同的:
var person = {
name: "Person",
greet: function() {
return "Hello " + this.name;
}
};
Run Code Online (Sandbox Code Playgroud)
var person = {
name: "Person",
greet() {
return "Hello " + this.name;
}
};
Run Code Online (Sandbox Code Playgroud)
ES6的方式与之前的方式有什么不同吗?如果不是那么在它们里面使用"超级"也应该被视为相等,这不符合,请看下面的两个变量:
let person = {
greet(){
super.greet();
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
});
person.greet();
Run Code Online (Sandbox Code Playgroud)
let person = {
greet: function(){
super.greet(); // Throw error: Uncaught SyntaxError: 'super' keyword unexpected here
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
}); …Run Code Online (Sandbox Code Playgroud) javascript ×3
function ×2
ecmascript-6 ×1
idioms ×1
methods ×1
oop ×1
super ×1
syntax ×1
terminology ×1