将变量数据类型解析为包含JavaScript中数据类型的条件检查的函数

时间:2013-06-16 17:20:08

标签: javascript

要将变化的数据类型(从数组变为整数)传递给同一个函数,然后在更改其值之前检查数据类型,使用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';    
  }
}

谢谢:)

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';       
    }  
}

See ECMAScript

或者如果您总是希望它作为数组,但不建议这样做

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';)进行两次编码。