一.变量
var声明的,在全局范围内都有效,是全局对象的属性,全局对象是window
let声明的,a.有块级作用域,b.不允许在相同作用域内重复声明同一个变量
运用在for循环中,避免造成全局变量。
let str = '';
for (let i = 0; i < 9; i++) {
str = str + i;
}
console.log(str);
// Expected output: "012345678"
const声明常量,不可改变,不可重复
二、解构赋值
1.默认值,生效条件是,对象的属性,或者变量的值严格等于undefined
var [x=1] = [undefined] // x是1
var [x=1] = [null] // x是 null
var {x, y = 5} = {x:1}
2.嵌套结果对象
注意: p是模式,不是变量,因此不会赋值
const obj = {
p: ['hello', {y:'world'}]
}
var {p: [x, {y}]} = obj
// 注意: p是模式,不是变量,因此不会赋值
嵌套对象,父属性不存在,那将会报错
// 报错
const {foo:{bar}} = {name:'one'}
3.对象赋值解读
const {list: msg ='some thing'} = {}
4.函数参数的解构也用默认值,以下2种请注意区分
第一种:为变量x,y指定默认值
function move({x =0, y =0} = {}) {
return [x,y]
}
move() // [0,0]
move({}) // [0,0]
第二种为参数指定默认值
function move({x, y} ={x:0, y: 0}) {
return [x,y]
}
move() // [0,0]
move({}) // [undefined,undefined]