JavaScript中返回对象的expect函数工作原理是什么
expect函数工作逻辑拆解 你贴的是测试断言库(类似Jest的expect)的极简骨架代码,逻辑可以拆成几部分理解:
- 外层
expect是普通的具名函数,接收一个入参value(也就是你要断言的实际值),函数执行后永远返回一个普通对象。 - 返回的对象上挂载了
toBe属性,这个属性的值是一个ES6箭头函数:
这个箭头函数接收一个入参这里的写法
exp => console.log(success)是箭头函数的简写形式:单参数可以省略参数括号、单语句函数体可以省略外层花括号和return关键字,等价于ES5写法:toBe: function(exp) { console.log(success) }exp(也就是你期望的对比值),你当前贴的版本是未完成的骨架,内部没有写实际值和期望值的对比逻辑,只会固定打印变量success的内容。 - 这个函数采用链式调用写法,实际执行流程可以参考示例:
// 调用示例 expect(1+2).toBe(3) // 执行顺序: // 1. 先运行expect(1+2),传入实际计算结果3,返回带toBe方法的对象 // 2. 拿到返回对象后,调用对象上的toBe方法,传入期望值3 // 3. 执行toBe内部的逻辑,当前版本会直接打印success
补充说明:正常可用的断言逻辑里,toBe方法会通过闭包拿到外层expect传入的value,判断value === exp是否成立,不成立就抛出断言错误,成立才输出通过提示,你贴的代码只搭了结构,还没实现核心判断逻辑。
内容的提问来源于stack exchange,提问作者Gleb Krylov
相关产品推荐
相关产品推荐

