ES6箭头函数---(箭头函数和普通函数的区别)

箭头函数

一个参数

// 只有一个参数
// f : 函数名称
// v :  函数参数
// v+v : 函数内容
 let f=v=> v+v

 console.log(f(10))  //20

两个参数

// 两个参数需加小括号
 let ff=(v1,v2)=> v1+v2
 console.log(ff(10,20))

多个语句

// 有多个语句的时候需要加大括号
// 有多个语句的时候return不能省略
let fff=(a,b,c)=>
{
    
    
    console.log(a)
    return a+b+c
}
console.log(fff(1,1,1))

返回对象

// 返回对象需要在对象的外面加小括号包起来
let  p=(name,age)=>({
    
    name:name,age:age})
console.log(p('张三',18))

演示数组排序

//给数组里面的值排序
let  numbers=[10,2,11,15,22,36]
// let  res=numbers.sort(function(a,b){
    
    
//     return a-b
// })
let  res=numbers.sort((a,b)=>a-b)
console.log(res)

注意事项

  • ES6允许使用箭头(=>)定义
  • 不需要参数或者多个参数,需要加上()
  • 函数体有多条语句时,需要使用大括号{},且必须使用return返回
  • 箭头函数返回对象时,需要用小括号包起来
  • 箭头函数使得表达更简洁
  • 箭头函数能够简化回调函数

箭头函数this指向

普通函数中的this

  • this总是代表它的直接调用者(js的this时执行上下文),例如obj.func,那么func中的this就是obj
  • 在默认情况(非严格模式下,未使用‘use strict’),没有找到直接调用者,则this指的是window(约定俗成)
  • 在严格模式下,没有直接调用者的函数中的thisunderfined
  • 使用callapply,bind绑定的this指的是绑定对象

箭头函数中的this

  • 箭头函数没有自己的this,它的this是继承而来的,默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象,定义它的时候,可能环境是window,箭头函数可以方便地让我们在setTimeout,setInterval中方便的使用this
  • 在箭头函数中,this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this
// var  p={
    
    
//     name:"张三",
//     say(){
    
    
//        console.log("姓名:"+this.name)
//     }
// }
// p.say()

// var  p={
    
    
//     name:"张三",
//     say(){
    
    
//         var a=function(){
    
    
//             console.log(this,this.name)   //找不到name  underfind
//         }
//         a()
//     }
// }
// p.say()


//通过定义全局变量
// var  p={
    
    
//     name:"张三",
//     say(){
    
    
//         let self=this   //把this赋值给变量量self
//         var a=function(){
    
    
//             console.log(self,self.name) //通过self调用
//         }
//         a()
//     }
// }
// p.say()

//使用bind 绑定
// var  p={
    
    
//         name:"张三",
//         say(){
    
    
            
//             var a=function(){
    
    
//                 console.log(this.name) 
//             }.bind(this)  //找不到this对象时,通过bind绑定this
//             a()
//         }
//     }
//     p.say()

//箭头函数
var  p={
    
    
    name:"张三",
    say(){
    
    
        
        var a=()=>{
    
    
            console.log(this.name) 
        }
        a()
    }
}
p.say()

箭头函数和普通函数的区别

第一点:写法上:箭头函数相比普通函数写法较为简介
第二点:
- 普通函数this代表直接调用者,例如:person.name的this代表perspn
- 在严格模式下(‘use strict’),没有找到直接调用者的话,this则为undefined
- 在非严格模式下,没有找到直接调用者的话,this则为window
- 箭头函数this没有明确指向,它的this直接继承父类,如果父类也没有明确指向this那么this代表undefinded

箭头函数注意事项:
- 1.当参数只有一个时可以省略小括号
- 2.当参数有多个/没有时不能省略小括号
- 3.当函数体只有一句话时,可以省略大括号和return
- 4.当函数体有多句话时,不能省略大括号和return
- 5.this没有明确指向,直接继承父类this

猜你喜欢

转载自blog.csdn.net/weixin_45753871/article/details/112008037