1.let
传统的变量声明都是用var
eg:
(function(){
var i = 1;
var i = 10;
console.log(i);
})();
ES6改用let变量声明
eg:
(function(){
let i = 2;
cosole.log(i);
}
与var的区别:
1.let声明的变量只在当前代码块有效
2.同一代码块里不允许出现重名let变量
3.let特别适合用于循环(因为var声明的变量会有变量提升的情况)
eg:
var arr = [];
for(var i = 0;i < 10;i++){
arr[i] = function(){
console.log(i);
}
}
arr[3]();//此时i=10
/****************************/
var arr = [];
for(let i = 0;i < 10;i++){
arr[i] = function(){
console.log(i);
}
}
arr[3]();//此时i=3
2.set
(1)set是ES6新增的一种数据类型,语法特点与数组类似。
(2)与数组不同的是set数据结构里的所有数据都是唯一的。
eg:
/******传统写法******/
var arr = [1,2,3,4,6,6,7,7,8];
/*传统遍历数组方法一*/
for(var i = 0;i < arr.length;i++){
console.log(arr[i]);//此时输出1,2,3,4,6,6,7,7,8
}
/*传统遍历数组方法二*/
arr1.map(function(val){
console.log(val);
});
/******set写法******/
var set = new Set(arr);
/*set遍历数组方法*/
for(var element of set){//for in 循环不能遍历set集合,得用for of
console.log(element );//此时输出1,2,3,4,6,7,8
}
/*set添加数据方法*/
var set2 = new Set();
for(var i = 0;i <10;i++){
set2.add(i*2);
}
console.log(set2);
/*set将集合转换为数组 扩展运算符*/
var arr3 = [...set2];
console.log(arr3);
/*清空和删除set*/
set2.delete(2);//没有索引,直接删除数据2
console.log(set2);
set2.clear();//清空set2数据
console.log(set2);
tip:为什么在删除的时候没有用索引?
因为set数组的索引和数据是一样的。
eg:
let set3 = new Set([1,7,9,4,2,3,4]);
set3.forEach(function(index,val){
console.log(index+":"+val);//此时结果是1:1 7:7 9:9 4:4 2:2 3:3 4:4
});
/*判断set中是否有对应数据*/
console.log(set3.has(9));//此时答案是true
/*set数组长度*/
console.log(set3.size);//此时是6,set没有length的属性
原文:http://www.cnblogs.com/chencuixin/p/6506188.html