我目前正在创建一个 javascript 函数库。主要供我自己使用,但你永远无法确定其他人最终是否会在他们的项目中使用它,我至少会创建它,就好像这可能发生一样。
大多数方法仅在传递的变量具有正确的数据类型时才有效。现在我的问题是:提醒用户变量类型不正确的最佳方法是什么?应该抛出这样的错误吗?
function foo(thisShouldBeAString){ //just pretend that this is a method and not a global function
if(typeof(thisShouldBeAString) === 'string') {
throw('foo(var), var should be of type string');
}
#yadayada
}
我知道 javascript 会进行内部类型转换,但这可能会产生非常奇怪的结果(即 '234' + 5 = '2345' 但 '234' * 1 = 234),这可能会使我的方法做非常奇怪的事情。
EDIT
为了让事情更加清楚:我不想进行类型转换,传递的变量应该是正确的类型。告诉我的库的用户传递的变量类型不正确的最佳方法是什么?
类型检查的问题在于它实际上很难做到。例如:-
var s = new String("Hello World!");
alert(typeof s);
什么会收到警报?答:“对象”。确实,这是一种愚蠢的初始化字符串的方法,但我仍然经常看到它。我更喜欢在必要时尝试转换,或者什么也不做。
话虽如此,在我拥有完全控制权的 Javascript 环境中(即not如果您只是提供一个库,则为 true)我使用这组原型调整:-
String.prototype.isString = true;
Number.prototype.isNumber = true;
Boolean.prototype.isBoolean = true;
Date.prototype.isDate = true;
Array.prototype.isArray = true;
因此,对常见类型的测试可以非常简单:
if (x.isString)
尽管你仍然需要注意 null/undefined:-
if (x != null && x.isString)
除了避免new String("thing")
问题是,这种方法在日期和数组上尤其有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)