箭头函数

箭头函数

普通函数

命名函数

function fn1(){
        
}
//字面量形式
var fun2=function(){
}
//箭头函数
var fn3=()=>{
      console.log(a,b)
}
fn3(10,11);
//一个参数
var fn4=a=>{
      console.log(a);
}
//没有参数
//没有参数的时候,不能省略括号
var f5=()=>{
      console.log(123);
}
//返回值
function aa(){
      return 123;
}
let aa1=()=>123;//箭头函数
//箭头函数中如果只有一条 return 语句
// 则可以省略大括号
// 如果这个箭头函数还有且只有一个形参
// 则小括号也可以省略
let aa1 = a => a + 1
function b(){
      return function b1(a){
           return a+1;
      }
}
let b=()=>a=>a+1;
let b1=b()(1);
console.log(b1);
btn.onclick=function(){
      console.log(this);//标签
}
btn1.onclick=()=>{
      console.log(this);//window
}
btn.onclick=function(){
      setInterval(function(){
           console.log(this);
      },3000)
}
btn.onclick=function(){
       setInterval(()=>{
            console.log(this);
       },3000)
}
btn.onclick = function () {
        btn1.onclick = function () {
            console.log(this);
        }
}
  • 当内部函数使用箭头函数时,不会改变外部函数的this指向
  • 总结
  • 普通函数谁调用我 我的this指向谁
  • 箭头函数 我在谁里面被定义我的this就指向谁
let obj={
      say:function(){
           console.log(this);
      },
      eat:()=>{
          console.log(this);
      }
}
let {
      say,
      eat,
}=obj;
obj.say();
obj.eat();
给对象定义方法时不要使用箭头函数
function Dog(){
       this.say=function(){
            console.log(this);
       }
       this.eat=()=>{
           console.log(this);
       }
}
let d1=new Dog();
d1.say();
d1.eat();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容