前言:锻炼自己的思想,规范自己的编程思路。
问题:请你编写一个名为 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");
}
}
};
}
执行结果如下图:
结论:
严格相等运算符(===)用于比较两个值是否严格相等。它只有在两个操作数的类型相同且值相等时才返回true。
严格不相等运算符(!==)用于比较两个值是否不严格相等。它只有在两个操作数的类型不同或值不相等时才返回true。 这个题主要是复习一下JS的全等是三个等于,等于是两个等于。