要将变化的数据类型(从数组变为整数)传递给同一个函数,然后在更改其值之前检查数据类型,使用instanceof Array查看下面的方法是否有更好/更有效的方法?
function foo(x) {
if (x instanceof Array) {
for(i=0;i<x.length;i++){
x[i].bar = '1';
x[i].baz = '2';
}
}
else{
x.bar = '1';
x.baz = '2';
}
}
谢谢:)
答案 0 :(得分:2)
替代方案(使用ECMAScript标准)
if( Object.prototype.toString.call( x ) === '[object Array]' ) {
for(i=0;i<x.length;i++) {
x[i].bar = '1';
x[i].baz = '2';
}
}
或者如果您总是希望它作为数组,但不建议这样做
x = [].concat( x );
答案 1 :(得分:1)
更有效的方法也可以是分割你的功能(如果可能的话):
function fooArray(x) {
for(i = 0; i < x.length; i++){
foo(x[i]);
}
}
function foo(x) {
x.bar = '1';
x.baz = '2';
}
这也适用DRY原则(“不要重复自己”),因为您不需要对相同的逻辑(即x.bar = '1';
)进行两次编码。