2011-12-15 19 views
9

特定のvarが存在する場合はアクションを実行し、そうでない場合は無視されて動きます。私のコードの問題は、特定のvarが存在しない場合、JavaScriptコードの残りの部分を無視してエラーが発生することです。varが存在する場合のJavaScript

YouTubeが未定義、nullでないとき例

var YouTube=EpicKris; 

if ((typeof YouTube) != 'undefined' && YouTube != null) { 
    document.write('YouTube:' + YouTube); 
}; 
+0

[JavaScriptで定義されていないオブジェクトプロパティを検出する]の重複可能性(http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-javaスクリプト) –

答えて

3

コード:

var YouTube=EpicKris; 

if (typeof YouTube!='undefined') { 
    document.write('YouTube:' + YouTube); 
}; 

が働いのための最良の方法これはvarが存在するかどうかを調べるためにtypeofを使います。これは私にとって完璧に機能しました。

7
try { 
    if(YouTube) { 
    console.log("exist!"); 
    } 
} catch(e) {} 
console.log("move one"); 

がうまくいく、0または ""。

これは機能しますか?

+0

var YouTube = EpicKris;存在しないか、var YouTube = nullの場合またはYouTube = 0;エラーは発生せず、残りのJavaScriptコードが実行されるはずです。 –

+0

アップ、私の答えを無視、バグです、グルーの方が良いです! – Chango

+0

さて、私はグルロンの答えでそれを修正しました。これで、YouTubeが存在し、null、0または空の文字列でない限り、コードを実行します。この答えはあなたのために働きますか? – Chango

6

これは古典的なものです。

定義されていない変数に対するクロスブラウザのチェックに "window"修飾子を使用し、改行しません。

if (window.YouTube) { // won't puke 
    // do your code 
} 

ORピーナッツギャラリーからsticklersハードコア用...

if (this.YouTube) { 
    // you have to assume you are in the global context though 
} 
+3

あなたが別の範囲にいる場合、それは動作しません。私はそれをすることをお勧めしません。 – regality

+0

はい、私も言及する必要があります、任意のオブジェクト修飾子を実行すると、rootとして "something = {}"というオブジェクトがあり、 "something.x"のどちらかがうまくいかないかをチェックします。私はwindow.myThing = window.myThing ||のようなboostrappingプラグインを書くときにこれをしなければならなかった{};等IEは、v9でも、IEが遅れているため、これの本当の理由です。 –

+0

したがって、もしvar YouTube = EpicKris;エラーが発生せず、残りのJavaScriptコードが実行されるはずです。 –

1

try/catchの使用に関する:

try { 
    //do stuff 
} catch(e) { /* ignore */ } 
+0

これは私に説明できますか? –

+0

@KristianMatthews:これを見てください:http://jsfiddle.net/BGurung/deRvV/3/ –

+0

このアプローチはどこでもうまくいきますが、それは "私はこの仕組みがわからないので、そこにコードを書いてください。これは、ほとんどの場合、ユーザやネットワーク、またはあなたのコントロールの外にあるものに基づいて何かが失敗する可能性がある場合に実行する必要があります。通常、あなたは彼らが壊れている理由を理解し、あなたのコントロール下にあるものではありません。 –

0

私は、これはあなたが探していることができるものであると考えている:

if (typeof(YouTube)!=='undefined'){ 
    if (YouTube!==undefined && YouTube!==null) { 
     //do something if variable exists AND is set 
    } 
} 
0

それは簡単です...あなたは2つの方法

var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"] 

if(YouTube) { //if is null or undefined (Zero and Empty String too), will be converted to false 

    console.log(YouTube);// exists 

}else{ 

    consol.log(YouTube);// null, undefined, 0, "" or false 

} 

またはあなたが

var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"] 

if(typeof YouTube == "undefined" || YouTube == null) { //complete test 

    console.log(YouTube);//exists 

}else{ 

    console.log(YouTube);//not exists 

} 
可能でそれを行うことができます
関連する問題