相等还是不相等

289 阅读1分钟

前言:锻炼自己的思想,规范自己的编程思路。

问题:请你编写一个名为 expect 的函数,用于帮助开发人员测试他们的代码。它应该接受任何值 val 并返回一个包含以下两个函数的对象。

toBe(val) 接受另一个值并在两个值相等( === )时返回 true 。如果它们不相等,则应抛出错误 "Not Equal" 。 notToBe(val) 接受另一个值并在两个值不相等( !== )时返回 true 。如果它们相等,则应抛出错误 "Equal" 。

示例:(放代码里面)

输入:func = () => expect(5).toBe(5)
输出:{"value": true}
解释:5 === 5 因此该表达式返回 true。

思路:我定义了一个名为expect的函数,它接受一个参数val。函数返回一个对象,其中包含两个函数:toBe(val)notToBe(val)

在这两个函数中,只需要分别使用严格相等运算符(===)和严格不相等运算符(!==)来比较传入的值与原始值是否相等。如果满足条件,则返回true;否则,抛出相应错误。

基于上述思考,代码如下:

/**
 * @param {string} val
 * @return {Object}
 */
var expect = function(val) {
  return {
    toBe: function (value) {
      if (val === value) {
        return true;
      } else {
        throw new Error("Not Equal");
      }
    },
    notToBe: function (value) {
      if (val !== value) {
        return true;
      } else {
        throw new Error("Equal");
      }
    }
  };
}

执行结果如下图:

image-20230605223719572.png

结论:

严格相等运算符(===)用于比较两个值是否严格相等。它只有在两个操作数的类型相同且值相等时才返回true。

严格不相等运算符(!==)用于比较两个值是否不严格相等。它只有在两个操作数的类型不同或值不相等时才返回true。 这个题主要是复习一下JS的全等是三个等于,等于是两个等于。