箭头函数

箭头函数

/*
语法规则:
    function 函数名称(函数){
      函数体
      return 返回值
    }

    箭头函数是一个匿名函数,一般作为参数(回调)
    (参数)=>{
      函数体
      return 返回值
    }

    函数声明的补充说明
      1 如果没有参数,就不用传递
      ()=>{
        函数体
      }
      2 如果只有一个参数,也可以不加()
      name => {
        函数体
      }
      3 如果函数体只有一句话,那么可以不添加{}
      name => console.log(name)
      4 如果没有{},那么默认会将函数体的执行结果返回
        如果有{},想返回值必须添加return
        name => name === name => {return name}
*/

function text(callback) {
  var name = 'Iris'
  var temp = callback(name);
  console.log(temp + "你好");
}

text(name => name)

/*
text(name => {
  return name
}) 
*/

/* 
text((name)=>{
  console.log(name);
  return name
}) 
*/

为什么使用箭头函数

/* 
  函数的四种调用模式
    1 函数调用模式:直接调用函数本身:this指向window
    2 方法调用模式:对象.函数:this指向当前调用函数的对象
    3 构造函数调用模式:new Function():this指向当前构造函数指向的实例
    4 上下文调用模式:函数.call(this) 函数.apply(): this指向传入的参数对象
*/

/* var Obj = {
  name : 'Iris',
  age : 18,
  sayHi : function () {
     console.log(this.name + ":" + this.age);
  }
}


//对象.函数
// Obj.sayHi()
//函数调用模式
var fn = Obj.sayHi;
fn() //undefined:undefined  this值改变,使用输出的值为undefined */

//返回一个箭头函数
var obj = {
  name:'Iris',
  age:18,
  sayHi:function () {
    //在定义之后,this的指向不会随意改变,它对this的指向更明确
    //箭头函数中的this指向定义当前箭头函数的上下文的所在对象
     return ()=>{
       console.log(this.name + ":" + this.age );  //this指向obj
     }
  }
}

var fn = obj.sayHi()
// fn()
var obj2 = {
  name:'guagua',
  age:18
}
fn.call(obj2)
//输出结果为 Iris:18

你可能感兴趣的:(箭头函数)