一、Symbol类型
1、数据类型
(1)基本数据类型
number string boolean null undefined
(2)复杂数据类型(内置对象)
Object Array String Number Math Date Boolean等
(3)Symbol Es6的新增的基本数据类型
表示独一无二的值
定义:let sym=Symbol(描述符)
描述符=>描述当前symbol表示什么意义
二、Set 复杂数据类型(内置对象)
1、作用:储存无序数据的集合
2、创建:
let set=new Set() //空集合
let set = new Set([1,2,3,function(){}]) //可以存储数字、字符串、对象、函数等
3、属性和方法
(1)size属性
数组中存储的个数
(2)add方法
添加数据
(3)delete方法
删除数据
(4)clear 方法
清除所有元素
set.clear()
(5)forEach遍历数组
set.forEach(iteam =>{
//函数体
})
(6)获取Set结构里面的数据需要借助展开运算符,将Set转为Array
4、特点
集合Set中元素不能重复
5、应用
(1)数组去重
let arr=[1,2,2,4,4,6]
arr=[...new Set(arr)]
三、map 复杂数据类型
1、作用:一个数据集合,类似于对象Object的数据集合
Object的对象属性名是字符串类型
Map存储的数据也是键值对(key/value)形式,key可以是任何类型
2、创建
let map=new Map()
let map=new Map([['name','jack'],[100,80]])
3、属性和方法
(1)size属性
获取数据个数
(2)set方法
添加属性
map.set(true,'成立')
true =>key
'成立' => value
(3)delete 方法
删除数据
map.delete(true)
true =>key
(4)get方法
获取属性值
map.get(true)
true =>key
(5)clear 方法 清除所有数据
map.clear()
(6)has方法
判断集合是否有某一个数据
map.has(true)
4、特点
查找存储在map中的数据,可以不用遍历,根据key直接获取
value = map.get(key)
四、for-of循环
1、作用:遍历数组、字符串、map
2、语法
for(let v of arr){
//遍历的v是数组元素
}
for(let v of str){
//v遍历的是字符
}
for(let v of map){
//v遍历的是对象元素
}
五、模块化语法 import/export
1、模块化
(1)每个js文件可以看作是一个模块
(2)每个js模块中的内容与其他模块相互独立
2、模块间通讯
(1)方法一:
>a.js暴露模块
export{变量名,方法名}
//名字为a的js文件
import let arr=[1,2,3]
>b.js引入模块
import{变更名,方法名}from './a.js'
//名字为b的js文件
import {arr} from './a.js'
>index.html中:
注意:一定要在script标签中添加type='module',这样html才能识别import
//名为index的html文件
<script type='module'>
import{arr} from './a.js'
let newArr=arr
consol.log(newArr)
</script>
(2)方法二:默认模块化输出,一个js只能定义一次
export default{name:'jack'}
import A form'./c.js'
//A是任意变量名
//import 后面不用加花括号
六、js错误处理机制
1、异常错误分类
每个异常对应一个异常对象
(1)syntaxError 语法错误
(2)ReferenceError 引用错误
(3)TypeError 类型错误
(4)RangeError 值超出范围时发生的错误
2、自己捕获异常进行处理
try{
//可能发生异常的代码
}catch(error //异常对象){
//报错才会执行
} finally{
//无论报不报错,都会执行
}
//finally可有可无,视情况而定