js中的箭头函数=>

箭头函数的基本使用

  // 箭头函数: 也是一种定义函数的方式
  // 1.定义函数的方式: function
  const aaa = function () {

  }

  // 2.对象字面量中定义函数
  const obj = {
    bbb() {

    }
  }

  // 3.箭头函数
  // const ccc = (参数列表) => {
  //
  // }
  const ccc = () => {

  }

箭头函数的几种简单写法

  // 1.参数问题:
  // 1.1.放入两个参数或多个参数时
  const sum = (num1, num2) => {
    return num1 + num2
  }

  // 1.2.放入一个参数(简单写法:放参数的括号可以省去)
  const power = num => {
    return num * num
  }

  // 2.函数中
  // 2.1.函数代码块中有多行代码时
  const test = () => {
    // 1.打印Hello World
    console.log('Hello World');

    // 2.打印Hello Vuejs
    console.log('Hello js');
  }

  // 2.2.函数代码块中只有一行代码(简单写法:函数的{}大括号和return可以省去,它会默认执行那一行代码,把值返回出去)
  // const mul = (num1, num2) => {
  //   return num1 + num2
  // }
  const mul = (num1, num2) => num1 * num2
  console.log(mul(20, 30));

  // const demo = () => {
  //   console.log('Hello Demo');
  // }
  const demo = () => console.log('Hello Demo')//Hello Demo
  console.log(demo());//undefind

箭头函数中this的指向

一般情况下什么时候用箭头函数:把一个函数当成另一个函数的参数传给函数的时候。

箭头函数的this怎么指向的:向外层作用域中, 一层层查找this,,直到有this的定义,就是这个this。

  // 什么时候使用箭头
  // setTimeout(function () {
  //   console.log(this);
  // }, 1000)
  //
  // setTimeout(() => {
  //   console.log(this);
  // }, 1000)

  // 问题: 箭头函数中的this是如何查找的了?
  // 答案: 向外层作用域中, 一层层查找this, 直到有this的定义.
  // const obj = {
  //   aaa() {
  //     setTimeout(function () {
  //       console.log(this); // window
  //     })
  //
  //     setTimeout(() => {
  //       console.log(this); // obj对象
  //     })
  //   }
  // }
  //
  // obj.aaa()


  const obj = {
    aaa() {
      setTimeout(function () {
        setTimeout(function () {
          console.log(this); // window
        })

        setTimeout(() => {
          console.log(this); // window
        })
      })

      setTimeout(() => {
        setTimeout(function () {
          console.log(this); // window
        })

        setTimeout(() => {
          console.log(this); // obj
        })
      })
    }
  }

  obj.aaa()
</script>

你可能感兴趣的:(js)