1、变量
let
- 不能进行预解析
- 作用域名:全局作用于和块级作用域
- 同一块级作用域不可以重复声明
var
- 可以进行预解析
- 作用域名:全局作用于和函数作用域
- 可以重复声明
const
- 不能进行预解析
- 不能重复声明
- 作用域名:全局作用于和块级作用域
- 声明的时候赋值,之后不可以更改
let 和var 在for循环的区别
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</body>
<script>
let list = document.querySelectorAll('li')
for(var i=0;i<list.length;i++){
list[i].onclick = function(){
console.log(i) //3,3,3
}
}
for(let i=0;i<list.length;i++){
list[i].onclick = function(){
console.log(i) //0,1,2
}
}
</script>
2、解构赋值
对象解构赋值
key值必须一样
let obj = {
a:1,
b:2
}
let {a,b} = obj
console.log(a,b) //1,2
数组解构赋值
let arr = [4,5]
let [e,f,d] = arr
console.log(e,f,d)
拓展
将a,b两个数值做交换
之前的方式是设置一个中间变量
let a=1
let b=2
let c = a
a = b
b = c
console.log(a,b)
结构赋值以后更简便
let a=5;
let b=3;
[a,b]=[b,a]
console.log(a,b)
对象
##属性简洁表示法
let a = 'abc'
let b = 'dv'
let c = 'key'
let obj = {
a,
b,
[c]:'sss'
}