es6

learn-es6常用语法(1)

2019-11-18  本文已影响0人  crayona

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

上一篇下一篇

猜你喜欢

热点阅读