You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 22:54:38