ES6

作者: 他爱在黑暗中漫游 | 来源:发表于2018-05-20 00:08 被阅读5次

    ECMAScript 6 (2015)

    • 严格模式

      'use strict'
      
    • 申明一个变量(let)

      • let 申明的变量没有变量提升
      • let 申明的变量存在块级作用域
        • 可以用来解决闭包问题
      • let 申明的全局变量在函数内部也可以使用
    • 申明一个常量 (const)

      • 一旦设置无法修改
      • 可以改变对象中的属性
    • 字符串的一些扩展方法的使用

      • includes() :返回布尔值,表示是否找到了参数字符串

      • startsWith() :返回布尔值,表示是否找到了参数字符串

      • endsWith() :返回布尔值,表示参数字符串是否在源字符串的尾部

      • repeat():返回一个新字符串,表示将原字符串重复n次

        var s = “hello world”;
        s.startsWith(‘hello’) //true
        s.startsWith(‘world’,6) //true   ,表示从第6个开始后面的字符是 world
        s.endWith(‘hello’,5) //true ,表示前5个字符是hello
        ‘x’.repeat(2)  // “xx”
        ‘hello’.repeat(2)  // “hellohello”
        ‘ivan’.repeat(0)  // “”
        
    • 模板字符串

      • 使用“`”来定义模板字符串
      • 在模板字符串中可以保持变量的结构
      • 在模板字符串中可以直接使用js代码格式:${ code }
    • 箭头函数的推演

      写法1: arr.sort(function(x,y){return x - y ;});
      写法2:arr.sort((x,y) => {return x - y ;});
      写法3:arr.sort((x,y) => x - y);
      
    • 箭头函数的其它写法

      如果参数只有一个,可以将()省略    // arr.map(c=>c+1);
      如果没有参数,则一定能要写上()     // ()=> console.log(‘a’)
      如果多于一个参数,每个参数之间用逗号分隔   (x, y) => { ... }
      如果方法体只有一句代码,可以省略{} 和分号,如果有返回可以省略return
      如果方法体多于一句代码,则不能省略{} ,每句代码使用 分号分隔
      
    • 箭头函数的一些特点

      a.箭头函数没有自己的this,函数体内部写的this,指向的是外层代码块的this
      b.箭头函数内部的this是定义时所在的对象,而不是使用时所在的对象并且不会改变
      c.箭头箭头函数不能用作构造函数
      d.箭头函数内部不存在arguments,箭头函数体中使用的arguments其实指向的是外层函数的arguments
      
    • 对象的写法

          es5中对象: {add:add,substrict:substrict}
          es6中对象: {add,substrict}  注意这种写法的属性名称和值变量是同一个名称才可以简写,否则要想es5那样的写法,例如: {addFun:add}
      
    • 对象中的方法的写法

          es5中对象: {add:function(){},substrict:function(){}}
          es6中对象: {add(){},substrict(){}}
      
    • 对象的导出写法

          es5两种形式
           1、module.exports = fucntion (){};
           2、exprots.add =  fucntion (){};
      
          es6中写法:
          1、export default{
              add(){};
          }
          2、export fucntion add(){} 相当于 将add方法当做一个属性挂在到exports对象
      
    • 对象的导入

          es5: var add  = require('./calc.js');
          es6:
          如果导出的是:export default{ add(){}}
          那么可以通过  import obj from './calc.js'
      
          如果导出的是:
          export fucntion add(){}
          export fucntion substrict(){}
          export const PI=3.14
      
          那么可以通过按需加载 import {add,substrict,PI} from './calc.js'
      
    • promise:(承诺)

      • 来由:ES6之前是没有promise的,这个玩意是由前端社区提出,在ES6中成为一个标准

      • 作用:它是用来简化回调函数的多层嵌套

      • 使用:

        //  1)要使用promise必须先根据promise构造函数创建一个函数对象
        //      在promise的构造函数中有两个参数:resolve  reject    这两个参数是两个函数
        //          这两个参数是与promise中的状态对应:
        //              pending(进行中)
        //              fulfilled(已成功)
        //              rejected(已失败)
        //          状态的切换有两种方式:
        //              pending---->fulfilled 操作成功   --->会执行resolve中的方法
        //              pending---->rejected 操作失败    --->会执行reject中的方法
        //      在使用promise的时候可以在后面接无数个then方法,then方法可以传递参数
        //          参数一般分为三种类型:
        //              1)undefined
        //              2)普通数据:字符串,数字,boolean,数组,对象
        //              3)promise对象
        //  2)使用then方法执行promise
        //  3)在promise中提供一个统一处理错误的方法:catch
        
      • 例如:

        var fs = require("fs");
        fs.readFile("./data/a.txt", function (err1, data1) {
          if (err1) {
            return console.log("err1");
          }
          console.log(data1.toString());
          fs.readFile("./data/b.txt", function (err2, data2) {
            if (err2) {
                  return console.log("err2");
              }
              console.log(data2.toString());
              fs.readFile("./data/c.txt", function (err3, data3) {
                  if (err3) {
                      return console.log("err3");
                  }
                  console.log(data3.toString());
              });
            });
        });
        

    相关文章

      网友评论

          本文标题:ES6

          本文链接:https://www.haomeiwen.com/subject/wnhzdftx.html