2

私は自分自身がjavascript要素がたくさん存在するかどうかを確認するために以下を使用していることに気づきました:

if (typeof elem == "undefined")
  // Do something

コードの繰り返しを減らすことができるように関数を作成したいと思います。

if (exists(elem))

これが私が作成した関数です:

if (typeof exists == 'undefined') {
    function exists (e)
    {
        if (typeof e == "undefined")
            return false;
        return true;
    }
}

問題は、変数が関数を通過する前に未定義であるということです。javascriptエラーを生成します。これを処理する関数を作成するにはどうすればよいですか?

4

1 に答える 1

3

「問題は、変数が関数を通過する前に未定義であるということです。それはjavascriptエラーを生成します。」

「未定義」とは、 「未宣言」を意味していると思いますので、ReferenceError

その場合、関数に渡す前に、それが存在するかどうかをテストする必要があります。これにより、関数はかなり無意味になります。

宣言されていない変数をテストする関数を作成しようとするのではなく、使用する前に宣言するだけです。

IMOtypeof x === 'undefined'は、必要ではないはずの醜いハックです。ReferenceErrorあなたは何かを修正する必要があるとあなたに言っている友人であると考えるべきです。typeofハックはあなたの友人が何が起こっているのかをあなたに話すのを防ぎます。

于 2012-02-16T02:40:27.417 に答える