es6之函数的扩展
文章目录
开始啦!!!
1.函数参数的默认值
文章目录
1.1基本用法
可以在参数中通过等号=设置默认值
let fun1 = (x = 5) => {
return x;
}
console.log(fun1()) // 5
console.log(fun1(2)) // 2
1.2与解构赋值默认值结合使用
{a = 1, b = 2} = {}这种写法,尽量把默认值卸载左侧的大括号中
let fun2 = ({a = 1, b = 2} = {}) => {
console.log(a, b)
}
fun2({ a: 3, c: 5 })
1.3参数的默认值的位置
最好把函数中带默认值的参数,放在后面、
1.4参数的length属性
函数的length属性将会放回没有指定默认值的参数的个数
1.5作用域
当我们给函数设置默认值的时候,我们会形成一个单独的作用域,如下例子,会去找全局中的x,而不是使用函数中的x
let x = 1;
function f(y = x) {
let x = 2
console.log(y) // 1
}
当参数为一个函数时,是这样的
let foo = 'outer';
let fun3 = (f = x => foo) => {
let foo = '123'
console.log(f())
}
fun3() // outer
2.rest参数
rest参数,可以获取函数多余的参数,但是,只能在参数的最后一位,否则会报错
let add = (...val) => {
console.log(val) // [1,2,3]
}
add(1, 2, 3)
3.严格模式
从ES5开始,函数内部可以设置严格模式,但是ES6规定,只要参数使用了默认值,解构赋值,扩展运算符,就不可以使用严格模式,否则会报错。
4.name属性
可以通过function名字.name返回这个函数的名字
5.箭头函数
5.1用法
// 写法
()=>{
}
// 用的比较多,不想写demo了
5.2 注意事项
1.this指向父级的对象,而不是它本身
2.不可以当构造函数使用,意味着不可以使用new命令
3.不可以使用arguments对象,如果要用可以用rest对象代替
4.不可以使用yield命令,因此箭头函数不能用作Generator函数