//函数参数默认值
{
function test(x,y='world'){
console.log('默认值',x,y)
}
test('hello');//默认值,hello, world
test('hello','makchikin');//默认值, hello, makchikin
}
//默认值形参的后面不能存在没有默认值的形参,如下
{
function test(x,y='world',c){//这是错误的写法
console.log('默认值',x,y)
}
}
//函数作用域的关系
{
let x= 'test';
function test2(h,y=x){
console.log('作用域',x,y);
}
test2('kill');//作用域, kill, kill
}
//rest
//会自动转换为数组
{
function test3 (...arg){
for(let v of arg){
console.log('rest',v);
}
}
test3(1,2,3,4,'a');
}
// > rest, 1
// > rest, 2
// > rest, 3
// > rest, 4
// > rest, a
//自动拆分数组
{
console.log(...[1,2,3]);//1, 2, 3
console.log('a','b',...[1,2,4]);//a, b, 1, 2, 4
}
//箭头函数
{
let arrow = v => v*2;//函数名 = 参数 => 返回值
console.log('arrow',arrow(3));//arrow, 6
let arrow2 = () => 5;
console.log('arrow2',arrow2());//arrow2, 5
}
// 伪调用,优势快
{
function tail(x){
console.log('tail',x);
}
function fx(x){
return tail(x);
}
fx(123);//tail, 123
}
console