1常量和变量 let cont (变量声明更加合理 不会有先赋值后声明的情况)
不能预解析 (变量提升) 也不能重复声明=》会报错
常量的值无法改变
a块级作用域
b暂存死区 不能预解析
c不能重复声明
d常量不可声明不赋值 =》const a会报错
----
提升是指es5中的变量 ,你在赋值的下面声明也是可以的
abc="123"
var abc
2常用数据类型 String Number Boolean Undefined Null +>Object Function
es6中新的数据类型 (不重复的数据类型 可以被Object.getOwnPropertySymbol循环key值)
symbol
let abc=symbol("name") //括号中的是对其进行描述 无实在意义
创建一个对象的私有属性 不能用Object.keys() 去遍历
可以使用Object.getOwnPropertySymbol去遍历symbol的属性
-------
symbol对map的作用不大 因为map中的key值本来就是唯一的 所以可以用Object.keys() 获取symbol属性
3数据解构 =》 后端传过来的json渲染到页面上 (多样的循环方式 ,可以直接获取index,value等)
for of (value)/for in(index)/forEach
for in 循环的值是下标 (index的值是string,不但遍历值还会遍历属性,某些情况下会随机遍历)
for of循环的值是value(不能获取到下标,除非它是一个map)
forEach循环中可以有index,value,array
***只有map对象才可以用for of获取下标
for(let [value,i] of new Map(arr.map(item,index)=>[item,index]))
----
可以
for(let index of arr.keys()){} 遍历index
for(let value of arr.values()){} 遍历value
for(let arr of arr.entries()){} 遍历[key,value]
4解构赋值 (节省一个总参数,使得参数结构更加明了)
a解构数组嵌套数组 let arr=[1,2,2,[4,3],[5,6,6]]
let [a,b,c,[d,f],[e,g,h]]=[1,2,2,[4,3],[5,6,6]]
b解构循环嵌套循环
let arr=[[a,b],[c,d],[e,f]]
for(let [a,b] of arr){
console.log(a,b)}
c解构对象
let person={
name:'',
age:'',
job:''}
let {name:a,age:b,job:c}=person
也可用for of 遍历循环[{},{}]
for (let {name,age,job} of arr){}
5扩展运算符=》展开运算符 (三个点) (参数展开更为方便)
a合并数组 let arr1=[1,2,23];
arr2.push(...arr1)
或者 arr3.push([...arr2,...arr1])
let fn=function(a,b,...c){
//c表示剩余的参数 [3,4,5,6]
}
function(1,2,3,4,5,6)
6箭头函数(解决this指向问题)
let abc=()=>{}
a没有参数要写扩号
b有参数 参数不只一个的时候要写括号
c参数可变的时候要用括号括起来 (a,b,...c)=>{}
d返回值为一个对象时要用括号包起来 const fn=(a,b)=>({a:b})
***箭头函数中的this在定义的时候就确定下来了
在箭头函数中无法通过 call apply绑定this 第一个参数可以忽略
7set 类似与数组的一种数据结构 key值不能有重复的 也不能通过下标访问(***数组去重)
let arr=[1,2,3,4,4,5,5,4];
let setArr=new set();
arr.forEach((x)=>setArr.add(x))
--------------------------
map(名值对形式 并且key可以为任何数据类型) 解决之前的key 不能为json
a map的key值可以是任何数据类型
b 可以通过key方法或者value方法一次拿到所有的key值或者value值
c forEach遍历
d 通过扩展运算符转换成数组[...maparr]
key值唯一 key方法遍历 forEach遍历 扩展运算符转化成数组
set与map的方法:set add clear has
在map中通过get来获取值
***通过map进行对象排序***
let mapPeople=new map({
people:[
{age:1}
{age:5}
{age:3}
]})
mapPeople.get(people).arrMan.sort((a,b)=>{
return a.age-b.age})
8 属性表达式 (修改对象的键值) 修改对象键值
定义对象时把表达式放入方括号内
let people={
[name]:age
} //来修改属性名
方括号内可以是 : 表达式 ||函数 该函数也可以执行
9Math.trunc(-1.23333) 去除小数点后的数 //-1
Math.sign(-5) //-1
Math.sign(5) //+1
Math.sign(0) //0
Math.sign(NaN) 判断一个数是正数负数还是0
网友评论