1、let声明变量:
- 不能重复声明
- 块级作用域(只在代码块中有效)
- 不存在变量提升
- 不影响作用域链
2、const 常量
- 需要赋初始值
- 变量名要大写(书写规范)
- 块级作用域
- 常量不能修改
- 引用数据类型(数组、对象)可以修改不保存,因为指向的该属性的 内存地址
3、for..in 和 for ... of
let xiyou = ['唐僧','猪八戒','沙和尚','孙悟空']
for (const key in xiyou) {
console.log(key) // 输出key,数组为下标,对象为键值
}
for (const item of xiyou) {
console.log(item) // 输出value,数组为元素
}
let obj = {
name:'张珊珊',
age:12,
sex:'女'
}
for (const key in obj) {
console.log(key,obj[key]) // 输出key,数组为下标,对象为键值
}
4 自定义迭代器
// 迭代器自定义遍历对象
let school = {
name:'XXX小学',
className:['一年级','二年级','三年级','四年级','五年级','六年级','幼儿园'],
[Symbol.iterator]:function(){
let index = 0
let _this = this
return {
next(){
if(index<_this.className.length){
let itemObj = {value:_this.className[index],done:false}
index++
return itemObj
}else{
return {value:undefined,done:true}
}
}
}
}
}
for (const item of school) {
console.log(item)
}
5。Set集合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 不重复的集合
let set = new Set(['鸣人','佐助','卡卡西','佐助'])
// 添加一个
set.add('大蛇丸')
set.add('宇智波·斑')
set.add('纲手')
// 删除一个
set.delete('大蛇丸')
// 查找是否存在
console.log(set.has('小樱'))
console.log(set.has('卡卡西'))
console.log(set)
// 遍历set集合
for (const v of set) {
console.log(v)
}
</script>
</head>
<body>
</body>
</html>
6.Map 的使用:唯一键值对
// Map 的使用
let map = new Map()
// 添加数据
map.set('username','张三')
map.set('username','张三11')
map.set(13,[1,3,4])
let obj = {
school:'了再發給'
}
map.set(obj,[{name:'可靠性1'},{name:'可靠性2'},{name:'可靠性3'}])
map.set({...obj},[{name:'可靠性11'},{name:'可靠性22'},{name:'可靠性33'}])
console.log(map)
// 删除数据
map.delete(obj)
// 清空数据
map.clear()
// 遍历map
for (const item of map) {
console.log(item)
}