目 录CONTENT

文章目录

ES6 新特性

lionkliu
2022-09-06 / 0 评论 / 0 点赞 / 20 阅读 / 1,248 字

let/const

  1. 不允许重复声明;

  2. 块级作用域(局部变量);

  3. 不存在变量提升;

当值为基础数据类型时,这里的值,就是指值本身。当我们试图改变 const 声明的变量时,则会报错。

let a = null;
a = 20;

const obDev = {
    a: 20,
    b: 30
}

obDev.a = 30;

console.log(obDev); // Object {a: 30, b: 30}

const 声明变量当值为引用数据类型时,这里说的值,则表示指向该对象的引用。这里需要注意,正因为该值为一个引用,只需要保证引用不变就可以,我们仍然可以改变该引用所指向的对象。

模板字符串

模板字符串(template string)是增强版的字符串,用反引号(`)标识,特点:

  • 字符串中可以出现换行符;
  • 可以使用 ${xxx} 形式引用变量;
// es6
const a = 20;
const b = 30;
const string = `${a}+${b}=${a+b}`;

// es5
var a = 20;
var b = 30;
var string = a + "+" + b + "=" + (a + b);

解构赋值

ES6 允许按照一定模式,从数组对象中提取值,对变量进行赋值,这被称为解构赋值

// 提取值
const props = {
    className: 'tiger-button',
    loading: false,
    clicked: true,
    disabled: 'disabled'
}

const { loading, clicked } = props;

// 给一个默认值,当props对象中找不到loading时,loading就等于该默认值
const { loading = false, clicked } = props;

-----------
// 交换变量的值
let x = 1;
let y = 2;

[x, y] = [y, x];

-------------
 // 模块解构
const { SourceMapConsumer, SourceNode } = require("source-map");

-------------
// 遍历 Map 结构
const map = new Map();
map.set('first', 'hello');
map.set('second', 'world');

for (let [key, value] of map) {
  console.log(key + " is " + value);
}
// first is hello
// second is world

箭头函数

  1. 箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值;

  2. 不能作为构造实例化对象;

  3. 不能使用 arguments 变量;

// es5
var fn = function(a, b) {
    return a + b;
}

// es6 箭头函数写法,当函数直接被return时,可以省略函数体的括号
const fn = (a, b) => a + b;

Async/await 异步

0

评论区

// // // //