1、变量声明
ES6 新增四种声明变量指令 let , const , import 和 class
let声明块级作用域,且不会再有声明提前了
2、字符串
新增模板字符串,用反引号 ` 包裹,其中允许插入简单的js表达式,也可以换行书写
let str =`aaa
bbb
ccc`
let name = 'user';
// $后面的花括号里的字符串会被js解析器认为是JavaScript语句
`添加${name}成功!`
// "添加user成功!"
新增字符串遍历接口
for (let key of 'name') {
console.log(key)
}
// "n"
// "a"
// "m"
// "e"
3、数组
新增扩展运算符(...)可把一个可遍历的对象,转化为逗号分隔的数列
console.log(...[1,2,3]);
//1 2 3
新增数组API Array.from、Array.prototype.find、Array.prototype.includes
Array.from用于将可遍历的对象转化为数组
function fun(){
console.log(Array.from(arguments))
}
fun(1,2)
//[1,2]
Array.prototype.find用来查找数组中符合要求的第一个元素,返回符合要求的元素
[1,5,3,4].find( item => {
return item>3;
});
//5
Array.prototype.includes用来判断数组中是否含有某个值,有返回true,否则返回false
[3,4,5].includes(5); // true
[3,4,5].includes(8); // false
4、函数
ES6中函数主要是拥有书写方式、参数、拓展运算符
箭头函数已在上一篇文章中介绍箭头函数
函数参数默认值设置
let log = (x, y = 'name') => console.log(x, y)
5、对象
当属性名为变量名,值为变量值时,可以直接只写变量,方法同理
let name = 'Jack';
let obj = { name } //等同于let obj = { name : name }
对象属性名也可以使用表达式
ES6对象新增API
Object.assign(targetObj, obj1, obj2...)用于对象的合并,如果有重复的属性名,后来的会覆盖之前的
let targetObj = { mid : 1, name : '张三'};
let sourceObj = { id : 2, name : '李四' ,address : '小白街5号' };
Object.assign(targetObj, sourceObj);
// { mid : 1, name : '李四', id : 2, address : '小白街5号' }
Object.is判断两个值是否相等
需要注意的是NaN等于NaN,+0不等于-0,跟全等判断的时候刚好相反
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
6、Symbol
ES6中新引入的一种数据类型,表示独一无二的值
通常在为了保证不会与对象的其它属性产生冲突时使用
let symbol = Symbol();
angular.forEach(allMessages,messages => {
angular.forEach(messages, msg => {
//only show one message
//atomicNotifyService.error(msg, 3000, symbol);
//show all message
atomicNotifyService.error(msg, 3000, msg);
});
});
解构、promise、class等将在下一章中介绍