• ES6最常用的小知识——图谱


    首先搭建一个基本的ES6开发环境。现在的Chrome浏览器已经支持ES6了,但是有些低版本的浏览器还是不支持ES6的语法,这就需要我们把ES6的语法自动的转变成ES5的语法。Webpack是有自动编译转换能力的,除了Webpack自动编译,我们还可以用Babel来完成。

    变量声明

    let 和 const

    不要用var,而是用let 和 const 。const声明一个只读的常量,let用来声明变量,const 和 let都是块级作用域。

    const PLUS = 'PLUS';
    
    let availableId = 0;
    availableId ++;
    

    模板字符串

    模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

    const user = 'world';
    console.log(`hello ${user}`);  // hello world
    
    // 多行(所有的空格和缩进都会被保留在输出之中)
    const content = `
      Hello ${firstName},
      Thanks for ordering ${qty} tickets to ${event}.
    `;

    默认参数

    function log(user = 'World') {
      console.log(user);
    }
    
    log() //  World

    箭头函数

    ES6 允许使用“箭头”(=>)定义函数。
    函数的快捷写法,不需要通过 function 关键字创建函数,并且还可以省略 return 关键字。
    同时,箭头函数还会继承当前上下文的 this 关键字,即:函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

    // ES6
    function Timer() {
      this.s1 = 0;
      setInterval(() => this.s1++, 1000);
    }
    
    // 等同于ES5
    function Timer() {
      this.s1 = 0;
      setInterval((function () {
        this.s1++;
      }).bind(this), 1000);
    }
    
    const timer = new Timer();
    
    setTimeout(() => console.log('s1: ', timer.s1), 3100); 
    // s1:3

    模块的 Import 和 Export

    import 用于引入模块,export 用于导出模块。

    //导出默认, counter.js
    export default function counter() { 
      // ...
    }
    
    import counter from 'counter'; 
    
    // 普通导出和导入,reducer.js
    export const injectReducer = ( ) => {
      //...
    }
    
    import { injectReducer } from 'reducers'
    
    // 引入全部并作为 reducers 对象
    import * as reducers from './reducers';

    ES6 对象和数组

    解构赋值

    // 数组
    let [a, b, c] = [1, 2, 3];
    a // 1
    
    //对象
    let { foo, bar } = { foo: "aaa", bar: "bbb" };
    foo // "aaa"

    函数的参数也可以使用解构赋值。

    function add ([x, y]) {
      return x + y;
    }
    
    add([1, 2]); // 3

    函数参数的逐层解析

    const x = {
      a : {
        b : 1
      },
      c : 2
    }
    const counter = ({a : {b}, c}) => b+c
    counter(x) // 3

    属性的简洁表示法

    const foo = 'bar';
    const baz = {foo};
    baz // {foo: "bar"}
    
    // 等同于
    const baz = {foo: foo};

    除了属性简写,方法也可以简写。

    const o = {
      method() {
        return "Hello!";
      }
    };
    
    // 等同于
    
    const o = {
      method: function() {
        return "Hello!";
      }
    };

    扩展运算符

    扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
    组装数组

    const a = [1, 2];
    const b = [...a, 3];
    b // [1,2,3]

    获取数组部分

    const arr = ['a', 'b', 'c'];
    const [first, ...rest] = arr;
    rest;  // ['b', 'c']
    
    // With ignore
    const [first, , ...rest] = arr;
    rest;  // ['c']

    还可收集函数参数为数组。

    function directions(first, ...rest) {
      console.log(rest);
    }
    directions('a', 'b', 'c');  // ['b', 'c'];

    代替 apply。

    function foo(x, y, z) {}
    const args = [1,2,3];
    
    // 下面两句效果相同
    foo.apply(null, args);
    foo(...args);

    组装对象

    const a = { x : 1, y : 2 }
    const b = { ...a, z : 3 }
    b // {x:1, y: 2, z: 3}
  • 相关阅读:
    JS产生随机数的几个用法!
    title与alt的区别
    jquery select取值,赋值操作
    DIV+CSS中标签dl dt dd常用的用法
    vi/vim键盘图
    win7系统注册表的权限修改
    win7 链接打印机时提示未知的用户名或错误密码
    关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法
    把网页发送到桌面代码
    iframe多层嵌套时获取元素总结
  • 原文地址:https://www.cnblogs.com/Abner5/p/7281969.html
Copyright © 2020-2023  润新知