js函数的多种写法
函数声明和表达式
// 函数声明
function BindingIdentifier() {}
// 命名函数表达式
// (BindingIdentifier对函数外部不可访问)
(function BindingIdentifier() {});
// 匿名函数表达式
(function() {});
Function构造器
new Function('x', 'y', 'return x * y;');
新方法
自从ES2015推出以来,已经引入了几种新的语法形式。这些形式的变化是巨大的!
not-so-anonymous函数声明
这是一种新的匿名函数声明形式,如果你曾用过ES Modules,应该清楚这种语法。虽然它可能看起来与匿名函数表达式非常相似,但它实际上有一个默认名称,即“default”
// not-so-anonymous 函数声明
export default function() {}
方法定义
let object = {
propertyName: function() {},
};
let object = {
// (BindingIdentifier在这个函数中不可访问)
propertyName: function BindingIdentifier() {},
};
我们还可以使用这些新形式作为类声明和表达式中的原型方法的定义:
// 类声明
class C {
methodName() {}
["computedName"]() {}
get ["computedAccessorName"]() {}
set ["computedAccessorName"](value) {}
}
// 类表达式
let C = class {
methodName() {}
["computedName"]() {}
get ["computedAccessorName"]() {}
set ["computedAccessorName"](value) {}
};
和定义静态方法:
// 类声明
class C {
static methodName() {}
static ["computedName"]() {}
static get ["computedAccessorName"]() {}
static set ["computedAccessorName"](value) {}
}
// 类表达式
let C = class {
static methodName() {}
static ["computedName"]() {}
static get ["computedAccessorName"]() {}
static set ["computedAccessorName"](value) {}
};