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

    箭头函数(Arrow Functions)

    JavaScript中有一个有趣的特性,无论何时,当你需要一个函数时,你都可以在想添加的地方输入这个函数。

    jQuery的.click()方法接受一个参数:一个函数。没问题,你可以在这里输入一个函数:

        $("#confetti-btn").click(function (event) {
          playTrumpet();
          fireConfettiCannon();
        });
    

    对 于现在的我们来说,写出这样的代码相当自然,而回忆起在这种编程方式流行之前,这种写法相对陌生一些,许多语言中都没有这种特性。1958年,Lisp首 先支持函数表达式,也支持调用lambda函数,而C++,Python、C#以及Java在随后的多年中一直不支持这样的特性。

        // 六种语言中的简单函数示例
        function (a) { return a > 0; } // JS
        [](int a) { return a > 0; }  // C++
        (lambda (a) (> a 0))  ;; Lisp
        lambda a: a > 0  # Python
        a => a > 0  // C#
        a -> a > 0  // Java
    

    ES6中引入了一种编写函数的新语法

        // ES5
        var selected = allJobs.filter(function (job) {
          return job.isSelected();
        });
        // ES6
        var selected = allJobs.filter(job => job.isSelected());
    

    当你只需要一个只有一个参数的简单函数时,可以使用新标准中的箭头函数,它的语法非常简单:标识符=>表达式。你无需输入function和return,一些小括号、大括号以及分号也可以省略。
    如果要写一个接受多重参数(也可能没有参数,或者是不定参数、默认参数、参数解构)的函数,你需要用小括号包裹参数list。

        // ES5
        var total = values.reduce(function (a, b) {
          return a + b;
        }, 0);
        // ES6
        var total = values.reduce((a, b) => a + b, 0);
    

    除表达式外,箭头函数还可以包含一个块语句。

     // ES5
        $("#confetti-btn").click(function (event) {
          playTrumpet();
          fireConfettiCannon();
        });
    
        //这是它们在ES6中看起来的样子:
        // ES6
        $("#confetti-btn").click(event => {
          playTrumpet();
          fireConfettiCannon();
        });
    

    当使用箭头函数创建普通对象时,你总是需要将对象包裹在小括号里。

        // 为与你玩耍的每一个小狗创建一个新的空对象
        var chewToys = puppies.map(puppy => {});   // 这样写会报Bug!
        var chewToys = puppies.map(puppy => ({})); //
    

    链接
    学习ES6

  • 相关阅读:
    Openmp编程练习
    PAT-1107 Social Clusters (30 分) 并查集模板
    [无需建树]已知前序或后序和中序遍历结果,输出前序或后序或层次遍历的方法汇总
    微机原理与接口技术笔记(二)
    微机原理与接口技术笔记(一)
    win32API多线程编程
    PAT-1021 Deepest Root (25 分) 并查集判断成环和联通+求树的深度
    PAT-1015 Reversible Primes (20 分) 进制转换+质数
    PAT-1022 Digital Library (30 分) 字符串处理
    PAT-1013 Battle Over Cities (25 分) DFS求连通块
  • 原文地址:https://www.cnblogs.com/feiyu6/p/8227643.html
Copyright © 2011-2022 走看看