参数默认值
函数参数里边直接赋默认值,但是可以被重新赋值1
2
3
4
5
6
7{
function test(x, y = 'world'){
console.log('默认值',x,y);
}
test('hello');
test('hello','kill');
}
强调:默认值的后边不能再有没有默认值的变量,比如在y = 'world'
后边添加个参数c
,这样就会报错,如果写成c = 'www'
这样是可以的
作用域1
2
3
4
5
6
7{
let x='test';
function test2(x,y=x){
console.log('作用域',x,y);//kill kill
}
test2('kill');
}
如果test2()
不赋值,那么输出为undefined undefined
;但是如果把第一个参数x
变为c
,那么输出的值为 kill test
,它会把上边x的值给y
rest参数
…;作用是把一系列的参数转换为一个数组
1 | { |
注意rest参数之后就不能有其他参数
扩展运算符
rest的逆运算
把数组拆成了离散的值
1 | { |
箭头函数 =>
先看下边箭头函数的代码:1
2
3
4
5
6
7{
let arrow = v => v*2;
let arrow2 = () => 5;
console.log('arrow',arrow(3));//arrow 6
console.log(arrow2());//5
}
上边第一个函数 的arrow
为函数名,第二个v
表示函数的参数;第三个=>
后边的表示执行的函数;第二个函数,如果箭头函数没有参数时 就写个()
this绑定
箭头函数中this
的指向,指函数在定义是的指向的所在,
ES5是函数在调用的时候的指向
注意作this
绑定的时候要看特性,有事可用,有时勿用
尾调用
尾调用存在于函数式编程的里边,主要能提升性能,主要针对函数嵌套1
2
3
4
5
6
7
8
9{
function tail(x){
console.log('tail',x);
}
function fx(x){
return tail(x)
}
fx(123)// tail 123
}