开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情
函数即对象。每个函数都是Function 类型的实例,而 Function 也有属性和方法,跟其他引用类型一样。但在ES 中也是有几种特别函数的特性。
箭头函数
在 ECMAScript 6 新增了使用箭头(=>)语法定义函数表达式的能力。任何可以使用函数表达式的地方,都可以使用箭头函数:
let arrowSum = (a, b) => {
return a + b;
};
let fsum = function(a, b) {
return a + b;
}
- 箭头函数中如果只有一个参数可以不用使用括弧,没有参数或者多个参数时必须使用括号
let sumfunc = ()=>{} - 箭头函数如果函数体只有一行可以没有大括号。但是多条语句必须使用大括号。
- 箭头函数不能使用 arguments、super 和 new.target,也不能用作构造函数。此外,箭头函数也没有 prototype 属性。
函数名
函数名就是指向函数的指针,所以它们跟其他包含对象指针的变量具有相同的行为。这就是为什么有时候你可以这样定义一个函数let sum=()=>{}。所以一个函数是可以有多个名称的。甚至有时候你只需要一个函数名就能调用该函数并执行它。
参数
ES 中对于函数的参数它是根本就不关心你传入参数的个数,也不关心参数的数据类型。所以你在使用时就会发现即便你定义了一个函数只接收两个参数,但是你在调用时就传两个参数或者传一 个、三个,甚至一个也不传,解释器都不会报错。
这是因为ES 函数的参数在内部是表现为一个数组,函数被调用时是会接收一个数组所以就不关心长度和数据类型。
重载
ES 中的函数是没有重载的。因为参数其实是一个数组,可以接收多个所以就没有重载。所以当你定义了两个相同名字的函数时,后定义的函数一定会覆盖先定义的。
function addSomeNumber(num) {
return num + 100;
}
function addSomeNumber(num) {
return num + 200;
}
let result = addSomeNumber(100); // 300
默认参数值
ES中支持你定义的参数值给它一个默认的参数值的。
function SayHi(name = 'Henry') {
return `myName is ${name} `;
}