js 函数

84 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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} `; 
}