在将相同元素传递给多次调用的函数的情况下,将元素存储为全局变量会更有效吗?
例如,您有一个每个按键调用的函数,并使用按钮的参数。
<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()" />
或者全局变量总是坏事吗?
答案 0 :(得分:1)
将元素存储为全局变量是否更有效?
严格来说,答案是肯定的。您正在保存函数调用。但实际上差异可以忽略不计。
答案 1 :(得分:0)
全局变量对于一个大项目是危险的,你将无法控制变量,它更容易发生冲突等等......对于你的问题,你可以创建一个包含一些缓存的对象函数,这样你使用较少的全局变量并组织你的代码以获得最佳。全局变量需要适度使用。 = d
答案 2 :(得分: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();
这将使您远离全局变量,并仍然保留缓存元素的好处。