考虑以下函数:
function interpolate(color1, color2, progress) {};
必须传递所有参数,color1 和 color2 必须是我的颜色对象的实例,progress 必须是数字。
检查类型更快还是简单地将 try/catch 块包裹在逻辑周围并查看它是否失败?
如果它确实失败了,那么我可以检查所有参数是否存在且正确并抛出一个描述性的期望。
考虑以下函数:
function interpolate(color1, color2, progress) {};
必须传递所有参数,color1 和 color2 必须是我的颜色对象的实例,progress 必须是数字。
检查类型更快还是简单地将 try/catch 块包裹在逻辑周围并查看它是否失败?
如果它确实失败了,那么我可以检查所有参数是否存在且正确并抛出一个描述性的期望。
我认为最好快速失败并预先进行检查,而不是依靠 atry/catch
来捕获不正确的参数。
您可以通过检查的length
属性来检查是否传递了所有参数,arguments
并且您可以通过检查相关函数的属性来查看函数签名有多少个参数length
:
function interpolate(color1, color2, progress) {
if (arguments.length !== arguments.callee.length) {
throw "wrong number of arguments passed";
}
};