将变量数据类型解析为一个函数,该函数在JavaScript中包含对数据类型的条件检查

Parsing a variable datatype to a function which contains a conditional check on the datatype in JavaScript

本文关键字:函数 数据类型 JavaScript 检查 条件 包含 一个 变量      更新时间:2023-09-26

要将不同的数据类型(从数组到整数)传递给相同的函数,然后在更改其值之前检查数据类型,查看下面使用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';    
  }
}

谢谢:)

另一种选择(使用ECMAScript标准)

if( Object.prototype.toString.call( x ) === '[object Array]' ) {
    for(i=0;i<x.length;i++) {  
      x[i].bar = '1';
      x[i].baz = '2';       
    }  
}

看到ECMAScript

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

x = [].concat( x );

更有效的方法是将函数拆分(如果可能的话):

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';)。