1

考虑以下函数:

function interpolate(color1, color2, progress) {};

必须传递所有参数,color1 和 color2 必须是我的颜色对象的实例,progress 必须是数字。

检查类型更快还是简单地将 try/catch 块包裹在逻辑周围并查看它是否失败?
如果它确实失败了,那么我可以检查所有参数是否存在且正确并抛出一个描述性的期望。

4

1 回答 1

2

我认为最好快速失败并预先进行检查,而不是依靠 atry/catch来捕获不正确的参数。

您可以通过检查的length属性来检查是否传递了所有参数,arguments并且您可以通过检查相关函数的属性来查看函数签名有多少个参数length

function interpolate(color1, color2, progress) {
    if (arguments.length !== arguments.callee.length) {
        throw "wrong number of arguments passed";
    }
};

现在是检查color1andcolor2是您期望的类型的对象检查 progress 是一个数字的情况

于 2012-05-13T22:16:16.353 回答