前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >认识一下断言和学会简单的使用

认识一下断言和学会简单的使用

作者头像
何处锦绣不灰堆
发布2024-03-19 09:20:28
920
发布2024-03-19 09:20:28
举报
文章被收录于专栏:农历七月廿一
搞明白什么是断言

断言是一种调试手段,他不是一种正常的开发逻辑代码,只是辅助我们开发人员进行代码调试用的,生产环境是不可以出现断言的代码的,所以首先明确一点,他和if判断的区别在于,if判断是兼容和排除用户的操作来的,断言是兼容和排除开发者的操作来的,比如开发者觉得这一块不可以是什么,那么他为了程序可以避免这种我已经知道的问题的出现,就可以使用断言进行拦截和抛出异常。如果你还是不理解,你可以简单的理解为,开发者对自己已知错误但是避免这种错误的一种调试手段!当然他可以用来写一些单元测试什么的。

  • js 自己实现一个断言功能代码
代码语言:javascript
复制
<template>
	javascript 断言
</template>

<script setup>
	//TODO: 定义一个断言函数
	const asserts = (con, msg) => {
	    // 条件为 你不希望出现的值 出现之后就抛出异常 提示出相应的信息
		if (con !== 0) {
			throw new Error(msg)
		}
	}
	// TODO: 求两个数字相除
	const count = (n, m) => {
		asserts(m === 0, '除数不可以为0')
		return n / m
	}
	count(1, 0);
</script>

报错截图:

  • 使用js的断言库 chai
代码语言:javascript
复制
	import { assert } from 'chai'
	const count = (n, m) => {
		console.log(assert);
		assert(m !== 0, '除数不可以为0')
		return n / m
	}
	count(1, 0)
  • 也可以这么写
代码语言:javascript
复制
	const count = (n, m) => {
		// 我期望这里是什么数据,如果不是,就直接抛出异常,后面的代码将不会继续执行 比如这里我期望m不是0  如果是 就直接抛出异常
		assert.notStrictEqual(m, 0, '除数不可以为0')
		return n / m
	}
	count(1, 0)

报错截图:

  • 断言是可以挨个执行的
代码语言:javascript
复制
	const count = (n, m) => {
		// 断言之后的代码将不会执行,但是后面还可以继续跟断言的代码逻辑,前面一个执行之后,后面的还是会继续执行,比如我传递的数据是1 不是0  那么后续的断言就会继续执行
		assert.notStrictEqual(m, 0, '除数不可以为0') 
		assert.deepEqual({ tea: 'green' }, { tea: 'jasmine' },'两边不一样');
		return n / m
	}
	count(1, 1)
chai 是做什么的?

chai是一个断言库,前面说了,断言的作用,那么如果每一个都断言功能都自己写的话,开发的成本就会变得比较高,就好比每一个UI效果都是自己写,那么开发一个页面的成本就会变得很高,chai就是提供了很多我们常用的一些断言逻辑,将他们封装了起来,这样可以让我们在写的时候直接用,里面的逻辑就是他的函数名字,比如上面的notStrictEqual 不是严格相等,就是严格相等的取反,=== 和 !== 的写法,再比如deepEqual 深度相等,就是两个对象不仅是key 相等,他的value也是一样的才算相等,类似这种功能我们自己写的话,是比较麻烦的,所以这里是使用了一个断言库,我们需要的一些功能函数,chai里面会提供很多相似的功能供我们参考使用!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 搞明白什么是断言
  • chai 是做什么的?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档