Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量数据类型解析为包含JavaScript中数据类型条件检查的函数_Javascript - Fatal编程技术网

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

将变量数据类型解析为包含JavaScript中数据类型条件检查的函数,javascript,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

要将不同的数据类型(从数组到整数)传递给同一个函数,然后在更改其值之前检查数据类型,请查看下面使用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';    
  }
}
函数foo(x){ if(数组的x实例){ 对于(i=0;i一个替代方案(使用ECMAScript标准)


更有效的方法还可以是拆分您的功能(如果您有可能):

函数数组(x){
对于(i=0;i

这也将应用DRY原则(“不要重复你自己”),因为你不需要两次编写相同的逻辑(即
x.bar='1';
)。

Object.prototype.toString.call(x)==”[Object Array]“
,这是一种替代方法,但即使你的方法在更新的浏览器中也是很好的->
Array.isArray(x)
第一种方法是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 );
function fooArray(x) { 
    for(i = 0; i < x.length; i++){    
        foo(x[i]);   
    }   
}

function foo(x) {
    x.bar = '1';
    x.baz = '2'; 
}