zoukankan      html  css  js  c++  java
  • 箭头函数详解及this指向

    注意事项

    • 只有匿名函数才可以改写为箭头函数。

    • => 这个读“胖箭头”

    • 不能用作构造函数

    • 不能使用arguments

    • 不能作为对象的方法调用,因为还是指向上下文,而不是调用的对象

    • 如果需要this操作,不能用作addEventListener里传的参数

    普通函数转化箭头函数步骤:

    • function去掉

    • 加上一个箭头

    • 如果只有一个参数,() 可以省略;

    • 如果只有一个return语句(只有一行代码),return和{ } 可以省略,。

    • 下面两个例子的化简过程详细地表现了其省略的规则:
    • // let show = function (a){
      //     return 2*a;
      // };
      
      // let show = (a)=>{
      //     return 2*a;
      // };
      
      // let show = a=>{
      //     return 2*a;
      // };
              
      let show = a=>2*a;   //默认在这一行代码前加 return。所以如果你再加个return,就会报错。
      alert(show);

    函数内this指向

    普通函数

    • 普通函数的this在声明时指向window,在调用时指向调用它的对象,如果直接调用,也指向window

    function b() {
      function a(){

        console.log(this)

      }
      let c = function() {

        a()

      }
      let obj2 = {a,c}
      obj2.a()//打印出obj2,打印出调用时的对象obj2
      obj2.c()//打印出window,打印出直接调用时的对象window
    }
    let obj = {b}
    obj.b()//使函数b内上下文this为obj

    箭头函数

    • 箭头函数的this在声明时指向window,在调用时指向声明时所在的上下文this

    • function b() {
          let a = () => console.log(this)
          let c = function() {a()}
          let obj2 = {a,c}
          obj2.a()//打印出obj,打印出声明时的上下文,而不是调用它的对象
          obj2.c()//打印出obj,打印出声明时的上下文,而不是调用时的上下文
      }
      let obj = {b}
      obj.b()//使函数b内上下文this为obj
  • 相关阅读:
    Appium + Python自动化
    Appium + python自动化
    基于python的request库,模拟登录csdn博客
    利用uiautomator实现Android移动app启动时间的测试
    JavaScript 闭包
    Vue.js 参考资料汇总
    JVM垃圾回收策略
    JVM内存分配策略
    synchronized底层原理
    HTTPS加密原理
  • 原文地址:https://www.cnblogs.com/hudaxian/p/14306928.html
Copyright © 2011-2022 走看看