Symbol
ES6新增加的基本数据类型
ES6引入Symbol的原因:ES5的对象属性名都是字符串,很容易造成属性名冲突。 比如:使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就可能与现有的方法产生冲突。如果有一种机制,保证每个属性名字都是独一无二的,这样就从根本上防止了属性名冲突。
Symbol表示独一无二的值
定义
let sym = Symbol(描述符)
描述符 => 描述当前symbol表示什么意义
- 检查数据类型
Set
复杂数据类型
作用: 存储无序数据的集合
创建
let set = new Set()
let set = new Set([1,2,{name:'jack'},function(){},'hello'])
属性和方法
size
add
delete
clear
遍历集合
set forEach
特点: 集合set中元素不能重复
Map
复杂数据类型
作用: 是一个数据集合,很类似于对象Object的数据集合,Map存储的数据也是key/value形式,key可以是任意类型
创建
let map = new Map()
let map = new Map([[name:'jack'],[100,18] ])
属性和方法
size
set
get
delete
clear
has
特点: 查找存储在map中的数据,可以不用遍历,根据key直接获取
for-of
作用:
遍历数组, 字符串 Map
对象 for-in
语法:
for(let v of arr){
//遍历数组 v:数组元素
}
let str = 'hellworld'
for(let v of str){
//v 字符
}
模块化语法
import / export
模块化
=> 每个js文件都可以看作一个模块 xx.js
=> 每个js模块中的内容与其它模块相互独立
=> 模块间通讯
第一种方式
a.js 暴露模块
export 变量或方法名
b.js 引入模块
import {变量,方法} from './a.js'
index.html
<script type="module">
import {变量,方法} from './a.js'
</script>
第二方法
export default {
name:'jack'
}
import A from 'c.js'
js错误处理机制
javascript引擎负责执行javascript代码,
如果发现错误代码,抛出异常错误, 如果异常错误没有处理语句,继续向上抛,至到系统处理
系统处理方式: 终止程序执行,在控制显示异常错误信息
异常错误类型
- 每个异常对应一个异常对象
- SyntaxError 语法错误
- ReferenceError 引用错误
- TypeError 类型错误
- RangeError 值超出有效范围时发生的错误
自己捕获异常进行处理
try{
// 可能发生异常的代码
}catch(error){
console.log(error)
}