变量的解构赋值
用来减少变量的定义,并且从数组或对象中提取值更方便,ES6提出了解构赋值
数组的解构赋值
let[a,b,c]=[1,2,3]
console.log(a)//1
console.log(b)//2
console.log(c)//3
可以省略变量
可以与扩展运算符连用
let[a,...b]=[1,2,3,4,5]
console.log(a)//1
console.log(b)//[2, 3, 4, 5]
可以定义默认值
let[a,b,c=0]=[1,2]
console.log(a)//1
console.log(b)//2
console.log(c)//0
可以应用解构赋值的其他变量
let[a,c=a]=[1]
console.log(a)//1
console.log(c)//1
注意情况
1.解构赋值前后类型对应
let[a]=null//报错
let[a]={}//报错
2.undefined不能替换默认值
let[a=0]=[null]//null
let[a=0]=[undefined]//0
3.引用扩展运算符和解构赋值的其他变量,不能倒着写
let[...a,b]=[1,2,3,4]//报错
let[c=a,a=1]=[]//报错
对象和解构赋值
基本用法
let{name,sex} ={name:"张良",sex:"男"}
console.log(name)//张良
console.log(sex)//男
给对象起别名
let{name:a,sex:b} ={name:"张良",sex:"男"}
console.log(a)//张良
console.log(b)//男
可以定义默认值
let{name:a,sex:b,age=22} ={name:"张良",sex:"男"}
console.log(age)//22
嵌套对象的解析
var {name,mon:[a,b,c]}={name:"张",mon:[2000,3000,1000]}
console.log(name)//张
console.log(a)//2000
console.log(b)//3000
console.log(c)//1000
字符串的解构赋值
解析字符串的值
var [...arr]="hello"
console.log(arr)//[h,e,l,l,o]
解析对象下的属性和方法
var {length}="hello"
console.log(length)//5
函数下的参数解构赋值
当参数为一个数组进行解构
function fun([a,b,c]){
console.log(a)
console.log(b)
console.log(c)
}
fun(1,2,3)
当参数为一个对象进行解构
function fun1({name:a,age:b}){
console.log(a+","+b)
}
fun1({name:"z",age:23})
注意:当解构赋值后面的值为其他类型,先考虑这个类型是否能转化成对象,否则不能解析
引用类型下新增的属性方法
数字扩展
0b10101//定义二进制
0o767//八进制 o大小写都可以
属性和方法
parseInt()转化成整数
parseFloat()转化成浮点数
isNaN()判断是否是数字
isFinite()判断是否是有限数字
isInteger()是否是整数 //整数返回true
数学扩展
trunc()去除一个数的小数部分
sign()判断一个数是正数、负数、还是零
返回+1正数 返回-1负数
返回+0正零 返回-0负零
返回NaN其他值
cbrt()计算一个数的立方根
imul()返回两个数的乘积,包含正负号
hypot()返回参数的平方和的平方根
signbit()判断正负数,返回布尔值,为负数返回true
console.log(Math.signbit(-5))//true
console.log(Math.signbit(5))//false
console.log(Math.signbit(+0))//false
console.log(Math.signbit(-0))//true
console.log(Math.signbit("add"))//flase
指数运算:2**3//为8,2乘以3遍=>2*2*2