在JavaScript中将数组作为参数传递

26

我有一个数组,我想将它作为参数传递给函数,例如:

function something(arrayP){
    for(var i = 0; i < arrayP.length; i++){
          alert(arrayP[i].value);
    }
 }

我发现arrayP[0]未定义,可能是因为在函数中没有说明arrayP是什么类型的数组。那么:

  1. 是否可以将数组作为参数传递?
  2. 如果可以,函数内部需要满足哪些要求?

我建议你学习更多关于数组的知识:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array - Felix Kling
3个回答

37

只需将.value删除即可,像这样:

function(arrayP){    
   for(var i = 0; i < arrayP.length; i++){
      alert(arrayP[i]);    //no .value here
   }
}
当然你可以传递一个数组,但是为了获取特定位置的元素,只需 使用 arrayName[index],使用.value将会获取数组中该位置上的对象的 value 属性 - 对于像字符串、数字等这样的数据类型,不存在该属性。例如,"myString".value 也将返回 undefined

3
String.prototype.value = "Hi Nick I broke your example!" 的意思是“字符串对象的原型中添加了一个value属性,其值为'Hi Nick I broke your example!'”。这段代码看起来像恶意代码,请勿使用。 - Ivo Wetzel
1
@IvoWetzel 为什么你认为这是邪恶的代码?他提供的代码是否存在漏洞? - 5ervant - techintel.github.io

5

JavaScript是一种动态类型语言。这意味着您永远不需要声明函数参数的类型(或任何其他变量)。因此,只要arrayP是一个数组,并且包含具有value属性的元素,您的代码就可以正常工作。


2

可以将数组传递给函数,处理它们没有特殊要求。您确定传递给函数的数组实际上在[0]位置有一个元素吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接