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语法确实是天马行空.

  • 相关阅读:
    vue 2 渲染过程 & 函数调用栈
    vue keep-alive的实现原理和缓存策略
    记 vue 表单的一个性能问题
    IIS 部署到服务器上出现数据库连接失败
    JS apply和call
    js 检查对象是否没有字段
    c# httpclient
    js 使用flow
    IIS 出现405
    站点js屏蔽他人广告
  • 原文地址:https://www.cnblogs.com/yiyide266/p/10489407.html
Copyright © 2011-2022 走看看