fro*_*dev 6 javascript jquery types arguments function
很多次我看到 - 特别是在jQuery中 - 一个函数可以有多个有效的数据类型,比方说一个字符串或一个函数.此外,在我自己的代码中,我有时会有一些函数可以采用一个或多个值.所以我可以调用函数:
myFunc("arg"); or myFunc(["arg1", "arg2", ...]);
Run Code Online (Sandbox Code Playgroud)
这似乎更灵活,也更方便打字,但这实际上是一件好事吗?
因为另一方面,没有明确说明函数的类型,而AFAIK则JIT编译器无法有效地工作.并且通常必须存在某种类型的类型强制,这可能会引入额外的性能损失.
那么,总是写一下会更好myFunc(["arg"])吗:即使数组中只有一个对象?你对此有何看法?
JavaScript 是松散类型的。如果你不小心的话,这可能会给你带来麻烦,但它也提供了很大的灵活性来精确地完成这样的事情。我经常利用这种行为;在函数中,您通常希望有这样的结构:
var func = function(someArg) {
var data;
switch (typeof someArg) {
case 'string':
// transform someArg into data
// example: pass it as a jquery selector to get a jquery object
break;
case 'object':
// transform someArg into data
break;
...
default:
throw new Error('Invalid argument type passed to func!');
}
// rest of function that expects data to be a certain type
};
Run Code Online (Sandbox Code Playgroud)
您的功能将变得更加灵活且更易于使用,但代价是变得更加复杂。以复杂性换取灵活性是否值得因情况(以及因人而异)而有所不同。
编辑:小心Array: typeof someArraywill Give "object",您需要使用它: http: someArray instanceof Array //jsfiddle.net/8ycFb/