一、es5与es6
es5与es6的区别:
- 发布的时间不同:es6于2015年发布
- 语法功能不断进行升级,不断地更新功能
- es6不兼容IE浏览器,新的EDGE版本兼容强
- webpack可以对es6代码进行编译,之后我们代码进行上线处理就行了
二、声明变量 - es5:var function
- es6:var function let const class import
暂时性死区:没有进行赋值之前,前面所有的区域都是暂时性的死区
console.log(a)
let a = 123;
console.log(a)
let a = 123;
let a = 456; //这里不能重复去声明同一个变量
console.log(a)
let a = 123;
a = 456; //let定义的变量可以改变值
console.log(a)
//var 声明的变量会自动挂载到顶层对象上,而let声明的变量不会
//let声明的变量不会对全局作用域造成污染
var a = 123;
console.log(window.a)
let b = 456;
console.log(window.b)
三、块作用域
作用域:
- es5:全局作用域,函数作用域
- es6:全局作用域,函数作用域,块级作用域(通常作用于for,if...里面,必须使用es6声明变量才生效)
if(true){
let a = 123;
}
//暂时性死区同样存在于块级作用域里面
//必须在赋值之后才会没有暂时性死区
if(true){
console.log(a);
let a = 123;
}
四、const
es6定义变量:
- 都是不可以进行重复声明的
- 都是会形成块作用域
- 都是具有暂时性死区
- 都是没有变量提升
- 都不会挂载到顶层对象上面去的
const 定义常量
const 不可以再进行改变值
const arr = [];
arr = 123;
console.log(arr);//报错
可以进行写值
const arr = [];
arr.push(1);
console.log(arr);
五、解构赋值
解构:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
let [a, b, c] = [1, 2, 3]; //完全解构
let [a, b, c] = [1, 2]; //不完全解构
console.log(a, b, c);
let {a, b, c} = {
a : 'abc',
b : 'def'
}
console.log(a, b);
//对象在解构的时候,可以交换位置
let {a, b} = {
b : 'def',
a : 'abc'
}
console.log(a, b);
匹配模式:
let {a:a1, b:b1} = {
b : 'abc',
a : 'cba'
}
console.log(a, b); //报错
console.log(a1, b1);
let {a:a1, b:b1} = {
b : 'abc',
a : {c : "123"}
}
console.log(a1)
let [a, [b], c] = [1, 2, 3]; //错误写法
let [a, [b], c] = [1, [2], 3];
let [a, b, c] = [1, [2], 3];
rest展开运算符
let [a, ...b] = [1, 2, 3, 4, 5, 6]
console.log(a, b)
let [a, c, ...b] = [1, 2, 3, 4, 5, 6]
console.log(a, b, c)
let [a, [b, ...c], d] = [1, [2, 3, 4, 5, 6]]
console.log(a, b, c, d)
let divs = document.getElementsByTagName('div');
console.log(divs)
console.log([...divs])
六、默认值
如果取不到值/取值为undefined的情况,就是undefined
let [a] = [];
console.log(a);
let num = '' || 123;
let num = 0 || 123;
let num = null || 123;
let num = false || 123;
console.log(num);
a = 默认值
let [a=1] = [];
console.log(a);
let [a=undefined] = [];
console.log(a);
let [a=123, b=456] = [undefined, 5];
console.log(a, b);
function fn(){
console.log(1);
}
let [a=fn, b=1] = [, 2]
console.log(a, b)
let {a:a1=1, b=2} = {
b:5,
a:2
}
console.log(a1, b)
let {max, min} = Math;
console.log(min(-550, 500))
console.log(max(-550, 500))








网友评论