let/const
-
不允许重复声明;
-
块级作用域(局部变量);
-
不存在变量提升;
当值为基础数据类型时,这里的值,就是指值本身。当我们试图改变 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
箭头函数
-
箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值;
-
不能作为构造实例化对象;
-
不能使用 arguments 变量;
// es5
var fn = function(a, b) {
return a + b;
}
// es6 箭头函数写法,当函数直接被return时,可以省略函数体的括号
const fn = (a, b) => a + b;
评论区