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

要素をグローバル変数として保存する方が効率的ですか?

厳密に言えば、答えはYESでしょう。関数呼び出しを保存しています。しかし、実際にはその違いは無視できるほどのものかもしれません。

于 2013-02-21T18:52:20.327 に答える
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 に答える
0

グローバル変数は大きなプロジェクトにとって危険です。変数を制御できず、競合の可能性が高くなります。問題については、いくつかの関数に関するキャッシュを保持するオブジェクトを作成できます。グローバル変数の使用を減らし、コードを最適に整理する方法。グローバル変数は節度をもって使用する必要があります。=D

于 2013-02-21T18:52:42.057 に答える