2

在将相同元素传递给多次调用的函数的情况下,将元素存储为全局变量是否更有效?

例如,您有一个函数,它在每次按下按键时都被调用,并采用按钮的参数。

<input type="button" onkeydown="func1(document.getElementById('menu')" />
<div id="menu">
Dynamic text here
</div>

而不是拥有

function func1(div)
{
....//body of function
}

这样做更好吗

var div//global variable
function func1()
{
  if(div === null)
  {
    div = document.getElementById('menu')
  }
  ...//rest of code
}

并调用它<input type="button" onkeydown="func1()" />

还是全局变量总是一件坏事?

4

3 回答 3

1

将元素存储为全局变量是否更有效?

严格来说,答案是肯定的。您正在保存函数调用。但在实践中,差异可能可以忽略不计。

于 2013-02-21T18:52:20.327 回答
0

全局变量对于一个大项目来说是危险的,你将无法控制变量,它更有可能发生冲突等等......对于你的问题,你可以创建一个对象来保存一些函数的缓存,这个使用更少的全局变量并最好地组织代码的方式。全局变量需要适度使用。=D

于 2013-02-21T18:52:42.057 回答
0

您可以将元素添加为函数的属性,如下所示:

function func1()
{
  console.log(func1.element);
}

func1.element = document.getElementById('menu');

func1();

您还可以检查该元素是否存在于函数中:

function func1()
{
  if(func1.element == undefined) {
    func1.element = document.getElementById('menu'); 
  }

    console.log(func1.element);
}

func1();

这将使您远离全局变量,并仍然保留缓存元素的好处。

于 2013-02-21T18:54:07.010 回答