一、参数
ES6允许为函数的参数设置默认值
function log(x, y = 'World') {
console.log(x, y);
}
console.log('Hello') // Hello World
console.log('Hello', 'China') // Hello China
console.log('Hello', '') // Hello
参数默认值与解构赋值的默认值结合起来使用
function foo({x, y = 5} = {}) {
console.log(x, y);
}
foo() // undefined 5
foo({x: 1}) // 1 5
二、属性
1、函数的length属性
length将返回没有指定默认值的参数个数
注意1:rest 参数也不会计入length属性
(function (a) {}).length // 1
(function (a = 5) {}).length // 0
(function (a, b, c = 5) {}).length // 2
(function(...args) {}).length // 0
注意2:如果设置了默认值的参数不是尾参数,那么length属性也不再计入后面的参数了
(function (a = 0, b, c) {}).length // 0
(function (a, b = 1, c) {}).length // 1
2、name属性
返回该函数的函数名
var f = function () {};
// ES6
f.name // "f"
const bar = function baz() {};
bar.name // "baz"
三、箭头函数
使用“箭头”(=>)定义函数
//单个参数时
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
// 多个参数时
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
// 箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回
var calculate = (num1, num2) => {
let total = num1*num1 + num2*num2;
return total;
}
箭头函数的注意点:
函数体内的this对象,就是定义时所在的对象
,而不是使用时所在的对象本身无this对象,不可以当作构造函数
,也就是说,不可以使用new命令,否则会抛出一个错误不可以使用arguments对象
,该对象在函数体内不存在。如果要用,可以用 rest 参数代替不可以使用yield命令
,因此箭头函数不能用作 Generator 函数