私はこれをやろうとしています:
var currentpage = page ? page : null;
ただし、ページがまだ定義されていない場合、スクリプトはエラーをスローします。ページが未定義であるかどうかをテストしても、スクリプトがページを検索するとすぐにエラーが発生します。
なぜ、そしてこの問題を回避する方法は何ですか?
更新:コード例をより明確にしました。
私はこれをやろうとしています:
var currentpage = page ? page : null;
ただし、ページがまだ定義されていない場合、スクリプトはエラーをスローします。ページが未定義であるかどうかをテストしても、スクリプトがページを検索するとすぐにエラーが発生します。
なぜ、そしてこの問題を回避する方法は何ですか?
更新:コード例をより明確にしました。
宣言されていない変数から読み取ろうとすると、単にaがスローReferenceError
され、スクリプトが終了します。
> x123
ReferenceError: x123 is not defined
より良い質問は、変数が存在するかどうかわからない理由です。通常の状況では、これは通常、何か悪いことをしていることを意味します。なぜその状況をチェックする必要があるのですか?確かに、私たちが提案できるより良い方法があります。
typeof
そのために演算子を使用します。
var a = (typeof page != 'undefined') ? 'page=' + page: '';
alert(a);
var page
または を関数引数として使用して、変数をどこかに定義しておく必要がありますfunction (page)
。同じスコープ内のどこかでこれを行った場合、値がなくても、変数は宣言されて存在します。同じスコープで宣言されていない変数を操作しようとしている場合、それはどのような状況でも機能せず、Javascript はエラーをスローするのに完全に正しいため、単純に間違っています。
別の方法は次のようになります。あなたvar a
が未定義であっても、elseが実行されます。つまり、スクリプトは実行を停止しません。
if(window.a){
alert('hello');
} else {
alert('this else will fire');
}