【js第15天】

本文主要介绍了JavaScript中的新增数据类型,包括Symbol、Set和Map,详细阐述了它们的特点、创建方法和常见操作。此外,还讨论了for-of循环的使用。接着,文章探讨了模块化语法,通过import和export实现模块间的通讯。最后,讲解了JavaScript的错误处理机制,包括异常错误类型和如何捕获及处理异常。
摘要由CSDN通过智能技术生成


前言

javaScript的标准——ECMAScript在不断发展,最新版ECMAScript 6标准(简称ES6)已经在2015年6月正式发布,ES6可以统称2015年后javascript所有最新版本,我们上节课介绍了ES6的部分特性,今天我们接着来介绍ES6剩下得特性。


一、新增的数据类型

1)Symbol数据类型

数据类型

基本数据类型

string number boolean null undefined

复杂数据类型

Object Array Math Date String Number Boolean ...

1.Symbol- ES6新增加的基本数据类型

2. ES6引入Symbol的原因:ES5的对象属性名都是字符串,很容易造成属性名冲突。比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突。

如果有一种机制,保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突。

3.Symbol 表示独一无二的值

4. 定义

let sym = Symbol(描述符)

描述符 => 描述当前symbol表示什么意义

2)Set数据类型

1.Set: 复杂数据类型

2. 作用存储无序数据的集合

3.创建

let set = new Set() //空集合

let set = new Set([1,2,{name:'jack'}, function(){},'hello'])

4.属性和方法

         1)size属性          用来获取集合中有多少个数据           set.size

         2)add                  用来向集合中追加数据                     set.add('hello')

         3)delete               用来删除集合中的某一个数据          set,delete() 

         4)clear                 用来清空集合中的所有数据              set.clear()

         5)遍历集合set   forEach

set.forEach(function(item){

    console.log(item)

}

          6)借助运算符...实现set集合转arr数组

let set=new set([10,20,30])

let arr=[...set]                //arr=[10,20,30]

5.特点:集合set中元素不能重复

6.应用:数组去重

数组去重的方法:

1.indexof或includes

定义一个新数组,存储不重复元素

遍历原数组, 判断新数组中是否存在原数组元素,如果不存,加入新数组

let arr = [1,2,1,2,4]

let newArr = []

arr.forEach((item)=>{

if(newArr.indexOf(item) == -1){

newArr.push(item)

}

})

2.双重for循环 + splice

for(let i = 0; i < arr.length; i++){

let item = arr[i]

for(let j = i+1; j<arr.length; j++){

if(item == arr[j]){

arr.splice(j,1)

j--

}

}

}

代码如下:(案例)

 function test3(){
            // let arr = [10,20,10,30,20]
            // console.log(arr)
            // let set = new Set(arr)
            // arr = [...set]
            // console.log(arr)

            // 代码行数越少出错概略越低
            let arr = [10,20,10,30,20]
            arr = [...new Set(arr)]
            console.log(arr)
        }
        test3()

3)MAP数据类型

1.Map:复杂数据类型

2.作用

是一个数据集合,是一个很类似于对象Object的数据集合

Map存储的数据也是key/value形式, key可以是任意类型

3. 创建

let map = new Map()

let map = new Map([ ['name','jack'], [100,18] ])

4.属性和方法

       1)size属性         用来获取该数据类型中数据个数                   map.size

       2)delete                 用来删除元素                                          map.delete('name')

       3)set                     用来添加元素                                          map.settrue,'成立')  

       4)clear                  用来清除所有元素                                   map.clear()

       5)get                     用来获取元素                                           map.get('name')

       6)has                     判断集合是否有数据                              map.has('name')

5. 特点:

查找存储在map中的数据,可以不用遍历,根据key直接获取

value = map.get(key)

代码如下:(案例) 

function test3() {
				let arr = [
					{ name: '钢筋', value: 11 },
					{ name: '水泥', value: 12 },
					{ name: '混泥土', value: 13 },
					{ name: '加气砖', value: 14 },
				]
function test2() {
				let map = new Map([
					['name', 'jack'],
					[100, 18],
				])
				console.log(map)
				console.log(map.size)

				//添加元素
				map.set(true, '成立')

				console.log(map)

				//获取元素
				console.log(map.get('name'))

				//删除元素
				map.delete('name')
				console.log(map)

				//判断集合是否有数据
				let isHas = map.has('name')
				console.log('isHas ', isHas)
			}
			// test2()
			function test1() {
				// Object对象属性名是字符串类型, 值可以任意类型
				let obj = {
					name: 'jack',
					age: 18,
					say: function () {},
				}
			}

4)for-of循环

1.for-of作用: 遍历数组, 字符串 Map;对象用 for-in

2.语法:

for(let v of arr){

//遍历数组 v:数组元素

}

let str = 'hellworld'

for(let v of str){

//v 字符

}

二、模块化语法

1.模块化语法 import / export

2.模块化概念

1) 每个js文件都可以看作一个模块 xx.js

2) 每个js模块中的内容与其它模块相互独立

3)模块间通讯

第一次方式

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错误处理机制

1.js错误处理机制

javascript引擎负责执行javascript代码,

如果发现错误代码,抛出异常错误, 如果异常错误没有处理语句,继续向上抛,至到系统处理

系统处理方式: 终止程序执行,在控制显示异常错误信息

2.异常错误类型

每个异常对应一个异常对象

1)SyntaxError 语法错误

2)ReferenceError 引用错误

3)TypeError 类型错误

4)RangeError 值超出有效范围时发生的错误

3.自己捕获异常进行处理

try{

// 可能发生异常的代码

}catch(error){

console.log(error)                   //程序出错误才会执行

}finally{
         //不论程序有无出错,都会执行
     }

function test2() {
				try {
					const num = 100
					num = 200
				} catch (error) {
                    console.log('程序出错了 :')
                } finally{
                    console.log('不论程序有无出错,都会执行')
                }

                console.log('结束');
			}
			test2()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值