es6有什么好处?ECMAscript6
1、可以提高开发效率,用更少的代码,实现更多的功能
2、提高程序的健壮性
定义变量的方式:let 、const 、 var
1、var 变量会提升,有全局作用域和函数作用域
2、let、const 必须先定义,在使用
变量不会提升,变量不能重复定义(不能重名)
有快级作用域,超出快级就不能使用
3、let 变量,值在程序执行的过程中,可以发生改变
const 常量,在定义的时候必须赋值,后面在运行的时候就没有机会赋值了
解构赋值:分解结构,进行赋值
作用:可以快速定义多个变量,并且给变量赋值,将复杂数据类型分解成变量
1、对象结构过程:
解构过程: 把对象属性值,赋值给同名变量
// let {name, age} = {name: '狗蛋', age: 18}; // let {name, age} = {name: '狗蛋', age: 18};
变量名和属性名不同的情况
// let {name:userName, age} = {name: '狗蛋', age: 18};
// console.log(userName, age);
设置默认值(如果可能解构失败可以设置默认值, 默认值是备胎)
// let {name, age, sex ='女'} = {name: 'zs', age: 18, sex: '男'};
// console.log(name, age, sex);
2、数组结构过程:
//let arr = [2, 3, 4];
// let [c1, c2, c3] = arr;
只取部分值
// let [, c1, ] = arr;
// console.log(c1);
模板字符串:使用反引号 ` `
1、可以换行,保留格式进行输出
let str = '大家好,我叫' + name + ', 今年' + age+ '岁了, 是' + sex + '生';
2、可以进行插值${....}
let str1 = `大家好, 我叫${name}, 今年${age}岁了, 是${sex}生`;
字符串新方法:返回true或者false
1、str.startsWith(字符串) 判断str是否以指定字符串开头
2、str.endsWith(字符串) 判断str是否以指定字符串结尾
3、str.includes(字符串) 判断str是否包含指定字符串
对象简写:
1、如果对象和属性名相同,可以只写一个
2、对象中方法,可以省略function
let name = '翠花';
let age = 18;
let obj = {
name: name,
age: age,
sex: '男',
say: function () {
alert('我男朋友是, 鹏鹏');
},
hi: function (){
alert('就是鹏鹏!!');
}
}
let obj1 = {
name,
age,
sex: '男',
say() {
alert('我男朋友是, 鹏鹏');
},
hi () {
alert('还是鹏鹏');
}
}
console.log(obj1.name);
obj1.say();
展开运算符 ... --允许一个表达式在某处展开
let arr1 = [1, 2, 3];let arr2 = ['a', 'b', 'c'];
let arr2 = ['a', 'b', 'c', ...arr1];
箭头函数:
1、定义函数用的是箭头 =>
2、箭头函数,也是函数表达式
3、var 变量 = (参数列表)=> { 函数体 }
4、箭头函数的简写:
(1)只有一个变量,可以省略()
(2)函数体只有一行代码,可以省略{ }和return
let big = num => num * 10 ;
5、箭头函数内部没有自己的this,使用的this是外部函数的this,箭头函数不能作为构造函数
6、函数可以设置默认参数,当函数没有传递,取默认值
set去重:
new set()可以得到一个set实例,set是一个集合,可以存储数据唯一值
var arr = [1, 2, 3, 4, 3, 2];
var set = new Set(arr); // {1, 2, 3, 4}
var arr = [...set]; // 将set实例展开成数组[...set]
console.log(arr);