一、for of(ES6)
1.了解for in遍历数组
key数组的下标,arry数组
for in在ES5中的作用是遍历对象的,但是for in可以遍历出原型上面的属性
//for in在ES5中的作用是遍历对象的
let onj={
name;"小菜",
age:19,
sex:"女",
company:"xxx"
}
for(let key in obj){
console.log(key);//name age sex company
console.log(key,obj.[key]);//name 小菜 age 18 sex 女 company xxx
}
2.for of(ES6)
for of 遍历数组是直接遍历出数组中的每一项的值,但是不可以直接遍历对象
3.ES6中for of遍历对象的方法使用
Object.keys(传入一个参数) 遍历,得到的是每一属性
Object.value(),得到的是每一个值
Object.entries,得到的是每一个数组,目的是遍历对象,得到一个拥有迭代器接口的数据,迭代器保存着key和value的值===>常用
for(let key of Object.keys(obj)){
console.log(key);//name age sex company
//得到的是每一属性
}
for(let key of Object.values(obj)){
console.log(key);//name age sex company
//得到的是每一个值
}
for(let key of Object.entries(obj)){
console.log(key);//name 小菜 age 19 sex 女 copany xxx
//Object.entries得到的是每一个数组
}
for(let [key,value] of Object.entries(obj)){
//使用解构赋值[key,value]
console.log(key,value);//name 小菜 age 19 sex 女 copany xxx
}
二、ES6数据类型
1.ES5数据类型:
基础数据类型: undefined null number string boolean
复杂(引用)数据类型:object
2.ES6基础数据类型:Symbol
1)创建Symbol
2)特点:两个不同的Symbol数据绝对不相等
3)Symbol的作用,需提及对象的属性
一般的对象属性只能由字符串来定义的属性,而在ES6中不仅仅是一个字符串,还拥有Symbol的值
例如:
let obj={
name:"小菜"
};
obj[Symbol()]="小可爱";//给obj赋值一个Symbol
console.log(obj);
4)Symbol的作用,具有唯一性,是对数据的处理,可以避免属性(数据)的覆盖,便于扩展对象/减少不需要的数据
例如:扩展对象属性
例如:不必担心冲突
5)取值(调用)
不可以使用Symbol来取值,因为Symbol具有唯一性
例如:无意义的操作,取不出Symbol的值,若要取值,则需通过定义变量(for of遍历来取)来取值
通过变量取值
6)其他的写法,对Symbol(描述作用,无实际的影响),方便找错误点
三、ES6中新增的两种数据结构(例如数组就是一种数据结构)
1.Set
1)作用是创建一种新的数据结构,在定义的Set,并且需要传值,这个值为数组
let data=new Set([1,2,3,4,5]);
console.log(data);//存了六条数据的结构
2)Set最大作用===>去重(去掉重复的数据),不用再使用算法去重
例如
3)Set结构拥有迭代器的,可以使用“…”的扩展运算符,把去重后的数据,重新得到新的数组
’例如:
4)Set内部存储的一些方法(买油)
add增加
delete删除
clear清空
entries接口,可以使用for of
2.新的数据类型Map(使用在框架的底层原理的开发)
允许任何数据作为键值(解决了对象不能作为键的问题)
1)在对象中,字符串也可以作为属性,但是在对象中的属性不可以是对象,所以如果是对象属性则会强制转换成字符串
在object中能够成为键的,只能是一个字符串或者是数字和symbol
2)Map允许任何数据作为键值
设置
取值某一个键对应的值
四、运算符
1.乘乘==>指数运算
2.位运算===效率是最高的
1)| 或运算符,按位或。先通过2进制进行转换再使用js中的32位运算进行运算,并且任意一个数或上0,则是数本身,但小数或上则是整数(取整:记住)
2)异或 按位,两位相同为0,不同为1
3)& 按位&,与运算,两位都同为1则是1,不同则为0