zoukankan      html  css  js  c++  java
  • [JavaScript]ECMA-6 箭头函数

    概述

    箭头函数的作用是为Js提供一种函数的简写方法,箭头函数作用域内不包含this, arguments, super, or new.target,并且不能用于对象的构造函数;

    基本语法

    [(][params][)] => [(][{]statements[}][)]

    • 参数:

    参数可有可无,但是无参数的时候必须带括号

    () => { statements }

    支持Rest parametersdefault parameters

    (param1, param2, ...rest) => { statements }
    (param1 = defaultValue1, param2, …, paramN = defaultValueN) => { 
    statements }

    支持Destructuring

    var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
    f(); // 6
    • 表达式

    表达式方面大致可分为两类;

    一类是接圆括号的:

    这类表达式只能编写一条语句,不支持分号,下面这个例子是错误的:

    var f = () => (a = "1";b = "2";a+b);

    同时元括号默认返回这个唯一语句执行后的值,并不需要带return关键值:

    var f = () => (a = "abc";);
    console.log(f());//abc
    
    var materials = [
              'Hydrogen',
              'Helium',
              'Lithium',
              'Beryllium'
            ];
    console.log(materials.map(m => m.length));//8, 6, 7, 9

    ({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
    var f = () => (rest.d);
    console.log(f());//40

    因为只有一条表达式所以元括号也是可以省略的

    var f = () => a = "abc";
    console.log(f());//abc

    第二类是接大括号的:

    这一类跟圆括号的差异就是它可以支持多条表达式,但是需要返回值时,必须接return:

    var f = () => {
            var a = 1;
            var b = 2;
            return a+b;
        }
    console.log(f());//3

    结论

    花式玩法:

    var f = ({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}) => ({a: a, b: b, rest: rest});
    console.log(f());

    Js语法确实是天马行空.

  • 相关阅读:
    USACO Section 1.4 Mother's Milk
    USACO Section 1.5 Checker Challenge
    USACO Section 1.5 Number Triangles
    九度 1140 八皇后
    九度 1091 棋盘游戏
    USACO Section 2.1 Sorting A ThreeValued Sequence
    USACO Section 1.4 The Clocks
    USACO Section 1.5 Superprime Rib
    USACO Section 2.1 Ordered Fractions
    双目测距与三维重建
  • 原文地址:https://www.cnblogs.com/yiyide266/p/10489407.html
Copyright © 2011-2022 走看看