0

私はこれをやろうとしています:

    var currentpage = page ? page : null;

ただし、ページがまだ定義されていない場合、スクリプトはエラーをスローします。ページが未定義であるかどうかをテストしても、スクリプトがページを検索するとすぐにエラーが発生します。

なぜ、そしてこの問題を回避する方法は何ですか?

更新:コード例をより明確にしました。

4

4 に答える 4

1

宣言されていない変数から読み取ろうとすると、単にaがスローReferenceErrorされ、スクリプトが終了します。

> x123
ReferenceError: x123 is not defined

より良い質問は、変数が存在するかどうかわからない理由です。通常の状況では、これは通常、何か悪いことをしていることを意味します。なぜその状況をチェックする必要があるのですか?確かに、私たちが提案できるより良い方法があります。

于 2012-10-15T09:49:12.987 に答える
1

typeofそのために演算子を使用します。

var a = (typeof page != 'undefined') ? 'page=' + page: '';
alert(a);
于 2012-10-15T09:45:17.447 に答える
1

var pageまたは を関数引数として使用して、変数をどこかに定義しておく必要がありますfunction (page)。同じスコープ内のどこかでこれを行った場合、値がなくても、変数は宣言されて存在します。同じスコープで宣言されていない変数を操作しようとしている場合、それはどのような状況でも機能せず、Javascript はエラーをスローするのに完全に正しいため、単純に間違っています。

于 2012-10-15T09:45:45.613 に答える
0

別の方法は次のようになります。あなたvar aが未定義であっても、elseが実行されます。つまり、スクリプトは実行を停止しません。

 if(window.a){
      alert('hello'); 
    } else {
      alert('this else will fire');
    }
于 2012-10-15T09:53:32.533 に答える