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

    箭头函数(★★★)

    ES6中新增的定义函数的方式。

    () => {} //():代表是函数; =>:必须要的符号,指向哪一个代码块;{}:函数体
    const fn = () => {}//代表把一个函数赋值给fn

    函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号

     function sum(num1, num2) { 
        return num1 + num2;
    }
    //es6写法
    const sum = (num1, num2) => num1 + num2;

    如果形参只有一个,可以省略小括号

     function fn (v) {
        return v;
    }
    //es6写法
    const fn = v => v;

    箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this

    const obj = { name: '张三'} 
    function fn () {
        console.log(this);//this 指向 是obj对象
        return () => {
            console.log(this);//this 指向 的是箭头函数定义的位置,那么这个箭头函数定义在fn里面,而这个fn指向是的obj对象,所以这个this也指向是obj对象
        }
    }
    const resFn = fn.call(obj);
    resFn();

    小结

    • 箭头函数中不绑定this,箭头函数中的this指向是它所定义的位置,可以简单理解成,定义箭头函数中的作用域的this指向谁,它就指向谁

    • 箭头函数的优点在于解决了this执行环境所造成的一些问题。比如:解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout和setInterval中使用this所造成的问题

    面试题

    var age = 100;

    var obj = {
    age: 20,
    say: () => {
    alert(this.age)
    }
    }

    obj.say();//箭头函数this指向的是被声明的作用域里面,而对象没有作用域的,所以箭头函数虽然在对象中被定义,但是this指向的是全局作用域

    剩余参数(★★)

    剩余参数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数

    function sum (first, ...args) {
        console.log(first); // 10
        console.log(args); // [20, 30]
    }
    sum(10, 20, 30)

    剩余参数和解构配合使用

    let students = ['wangwu', 'zhangsan', 'lisi'];
    let [s1, ...s2] = students;
    console.log(s1);  // 'wangwu'
    console.log(s2);  // ['zhangsan', 'lisi']

     

  • 相关阅读:
    Notes about "Exploring Expect"
    Reuse Sonar Checkstyle Violation Report for Custom Data Analysis
    Eclipse带参数调试的方法
    MIT Scheme Development on Ubuntu
    Manage Historical Snapshots in Sonarqube
    U盘自动弹出脚本
    hg的常用配置
    Java程序员的推荐阅读书籍
    使用shared memory 计算矩阵乘法 (其实并没有加速多少)
    CUDA 笔记
  • 原文地址:https://www.cnblogs.com/llanq123/p/13844543.html
Copyright © 2011-2022 走看看