ES6 语法小摘

块作用域构造 let 和 const

  1. let 声明,用法与 var 相同,不过用 let 声明的变量不会被提升,可以将变量的作用域限制在当前代码块中。
  2. 使用 let 声明变量,还可以防止变量的重复声明。
  3. 如果用 const 声明对象,对象本身的绑定不能修改,但对象的属性和值是可以修改的。
  4. 在全局作用域中使用 var 声明的变量或对象,将作为浏览器环境中的 window 对象的属性,这意味着使用 var 很可能无意中覆盖一个已经存在的全局属性
  5. 如果在全局作用域下使用 let 和 const,则会在全局作用域下创建一个新的绑定,但该绑定不会成为 window 对象的属性

模板字面量

  1. 模板字面量的基础语法就是用反引号 (`) 替换字符串的单、双引号
  2. 模板字面量如果需要在字符串中添加新行,只需要在代码中直接换行
  3. 占位符由一个左侧的 ${ 和右侧的 } 符号构成

默认参数

  1. 在 ES6 中,简化了为形参提供默认值的过程,可以直接在参数列表中为形参指定默认值

rest 参数

  1. 在函数的命名参数前添加 3 个点,就表明这是一个 rest 参数,rest 参数是一个数组,包含自它之后传入的所有参数

展开运算符

  1. 展开运算符在语法上与 rest 参数相似,也是 3 个点,它可以将一个数组转换为各个独立的参数,也可以取出对象的所有可遍历属性
  2. 展开运算符可以用来复制数组
let arr1 = [1, 2, 3];
# arr2 与 arr1 是同一个数组对象
let arr2 = arr1;    
# arr3 与 arr1 是两个不同的数组对象
let arr3 = [...arr1];
  1. 展开运算符也可以用来合并数组
let arr1 = ['a'];
let arr2 = ['b', 'c'];
console.log([...arr1, ...arr2]);
  1. 展开运算符也可以用于取出对象的所有可遍历属性,复制到当前对象中
let book ={
    title: "Vue.js 从入门到实践",
    price: 98
}

let bookDetail = {...book, desc: "a fine book"}
console.log(bookDetail);

对象字面量语法扩展

  1. 定义对象方法时可以省略冒号和 function 关键字
var car = {
    color: "red",
    doors: 4,
    showColor(){
        console.log(this.color);
    }
}
car.showColor();
console.log(car.showColor.name);
  1. 在 Javascript 中,访问对象的属性,可以通过点号(.) 或方括号([]),如果属性名包含了特殊字符或中文,或者需要通过计算得到属性名,则只能使用方括号。

解构函数

  1. 如果使用 var、let 或 const 声明解构变量,则必须提供初始化程序,即等号右侧必须提供值
  2. 如果变量之前已经声明,之后想要用解构语法给变量赋值,那么需要用圆括号包裹整个解构赋值语句
let book = {
    title: "Vue.js 从入门到实践",
    isbn: "987677898",
    price: 98
}
let title, isbn, price;
({title, isbn, price} = book);
  1. 当 book 对象中没有 salesVolumn 属性,或者该属性值为 undefined 时,则使用预设的默认值。如果希望在使用解构赋值时,使用与对象属性名不同的局部变量名,那么可以采用“属性名:局部变量名”的语法形式
let book = {
    title: "Vue.js 从入门到实战",
    isbn: "98787733",
    price: 98
}
let {title: bookTitle, isbn: bookIsbn='test'} = book;
console.log(bookTitle);
console.log(bookIsbn);
  1. 与对象解构不同,如果为已经声明过的变量进行数组解构赋值,不需要使用圆括号包裹解构赋值语句
let arr = [1, 2, 3];
let a, b, c;
[a, b, c, d = 0] = arr;

模块

  1. 导出可以分别导出,也可以将导出语句集中书写在模块的尾部。当导出内容较多时,采用后者会更加清晰;
  2. 没有添加 export 关键字而定义的变量和类在模块外是不允许访问的。
  3. 一个模块可以导出且只能导出一个默认值,默认值是通过使用 default 关键字指定的单个变量、函数或类。

Promise

  1. 每个 Promise 都会经历一个短暂的生命周期,先是处于进行中(pending)的状态,此时操作尚未完成,所以它也是未处理的(unsettled),一旦异步操作执行结束,Promise 则变为已处理(settled)的状态
  2. Promise 对象的状态改变,只有两种可能:从 pending 变为 fulfilled,或者从 pending 变为 rejected
  3. 通常是将 then() 方法和 catch() 方法一起使用来对异步操作的结果进行处理,这样能更清楚地指明操作结果是成功还是失败
promise.then(function(value){
    //完成
    console.log(value);
}).catch(function(err){
    //拒绝
    console.error(err.message);
}
  1. Promise 链式调用时,有一个重要特性就是可以为后续的 Promise 传递数据
  2. 与 Javascript 中的 try/catch 代码块不同,如果没有使用 catch() 方法指定错误处理的回调函数,那么 Promise 对象抛出的错误不会传递到外层代码,即不会有任何反应。
本作品采用《CC 协议》,转载必须注明作者和本文链接
CodeFarmer
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!