将值添加到函数本地的数组,而不修改函数本身

时间:2012-07-15 16:23:33

标签: javascript arrays

function animal(){
  var species = new Array('Monkey', 'Dog', 'Cat');
  for(i=0;i<species.length;i++)
  {
    document.writeln(species[i]);
  }
}

如何在不修改species函数的情况下向animal()数组添加其他值?

2 个答案:

答案 0 :(得分:1)

在不更改此函数的代码的情况下向数组添加值是不可能的,原因很简单,因为species变量使用的是在函数范围内声明的局部变量。因此,外部代码不会看到此变量。除此之外,该数组的值是硬编码的。所以忘了它。无需触及功能实现就不可能。

答案 1 :(得分:1)

我不确定我是否完全理解您的疑虑,但与其他语言不同的javascript可以完全覆盖某个功能。

所以,假设上面的代码,我可以这样做:

window.animal = function(){
  var species = new Array('Monkey', 'Dog', 'Cat', 'Mouse', 'Fish');
  for(i=0;i<species.length;i++)
  {
    document.writeln(species[i]);
  }
}

那就是说,我会避免使用document.writeln(),我认为这个功能比eval()差... 此外,正如Darin暗示的那样,如果可能的话,我也不会定义函数的局部数据。