SOURCE

//函数参数默认值
{
  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 命令行工具 X clear

                    
>
console