zoukankan      html  css  js  c++  java
  • 箭头函数

    //箭头函数
    //格式()=>{}
    1.最简单的形式:
    1  const fn =()=>{
    2     console.log('胡66!')
    3    }
    4    fn();

    上面输出:胡66.

    2.带参数的箭头函数

    1 const sum = (num1,num2) => {
    2     return num1+num2;
    3    }

    3.如果函数只有一句代码,箭头函数大括号可以省略

     const sum1 = (n1,n2)=> n1+n2;//箭头后面的表示return的值

    4.在箭头函数中,如果形参只有1个,可以省略小括号

    const sum2 = n=> n;//表示返回一个参数n

    5.箭头函数的this

    (1)箭头函数不绑定this,箭头函数的this指向,取决于函数定义的位置,谁调用了它,this就指向谁。
    1 const sum = (num1,num2) => {
    2     console.log('sum的this:'+this)
    3     return num1+num2;
    4    }
    sum();//由于这里调用sum的对象是window,所以这里打印的this指向的是window

     (2)用bind改变了this的指向,所以箭头函数的this指向也会改变

     1  const obj={name:'胡88'}
     2    function fnn(){
     3        console.log(this);
     4         return ()=>{
     5         console.log("箭头函数的this")
     6         console.log(this)
     7         console.log("箭头函数的this")
     8         }
     9    }
    10    const the = fnn.bind(obj);//bind改变fnn的this指向
    11    the();//虽然这里还是window调用了fnn函数,但是上面的bind已经改变了函数的调用对象,实际调用fnn的是obj这个对象,所以这里的this指的是obj
    12    o = fnn();//将fnn赋给变量o
    13    o();//指向函数o,这里的this指向的还是window    

    上面的(1)的箭头函数定义在全局中,它的this对象指向的是window,(2)中的箭头函数定义在函数中,它的this指向与它的父函数一样,谁调用

    它的父函数,箭头函数的this就指向谁。

    不管怎么说,上述的箭头函数都是定义在可以定义作用域的域中。

    7.要是箭头函数定义在对象中呢,因为对象没有作用域,那么this指向的是谁呢?

    1 var obj1 = {
    2        age:20,
    3        say:()=>{
    4            alert(this.age)
    alert(this)//这里的this指的是调用对象
    5 } 6 }
    obj1.say()//这里弹出的this.age会是20吗???

    上述obj1.say()弹出的this.age会是undefined,因为调用者window中没有age.

    修改形式(1)

    可以将上面改为下面形式,在全局中定义变量age=100:

    1   var age = 100
    2    var obj1 = {
    3        age:20,
    4        say:()=>{
    5            alert(this.age)
    6        }
    7    }
    8   obj1.say();

    上述obj1.say()弹出的this.age会是100,因为调用者window的作用域是全局,全局下的age=100.

    穷则独善其身,达则兼济天下……
  • 相关阅读:
    C++ 重载运算符简单举例
    Python 的几种推导式
    Linux 系统目录结构
    Shell 文件包含
    Shell 文件测试运算符
    Shell 函数定义与调用
    Shell 数组定义与获取
    C 语言精髓之变参函数
    Vim 字符串替换命令
    S5PV210 串口实验(中断方式)
  • 原文地址:https://www.cnblogs.com/hmy-666/p/12607776.html
Copyright © 2011-2022 走看看