2016-12-27 13 views
0

正しい値を返していない私は、PHPのページでPHPを介して生成されているjsの変数を持っています他のページが読み込まれたときにエラーをスローしないようにします。Javascriptの短絡が

var shadeData = shadeData || null; 

if(!shadeData){ return false; } 

しかし、これは動作していないと私はまだ取得しています:私のJavaScriptファイルの一つで、私がしようとしてきたので、私は、変数がまだ定義されていない場合は実行されているから、コードを停止したいですshadeDataが定義されていません。これらの行の下のコードには変数を使用する関数がいくつかありますが、理想的には、2行目がfalseを返すときには実行されません。

+0

PHPスクリプトで 'shadeData'を' null'または 'false'に設定します。 JavaScriptは未定義の値で不思議です。 – www139

+0

最初は、同じ変数に対して複数の 'var'宣言を使用しないでください。 2番目:php経由で変数入力を呼び出す場合は、php変数の周りに 'json_encode($ formattedShadeData)'をラップするだけです。 '$ formattedShadeData'が空であれば、構文エラーを防ぐことができます。 – Tyr

+0

@ ww139ありがとう、私はこれを試してみましょう。私の本能はJSに入れることです – user3006927

答えて

1

returnは、JavaScriptプログラムのグローバル/トップレベルのスコープでは使用できません。

あなたのアイデアは軽微な微調整の後でうまくいくはずです。あなたのコードをすべてIIFEにラップしてください。現実の世界では

// If shadeData is already defined and falsey, this is unnecessary. But included for clarity. 
var shadeData = shadeData || null; 

(function() { 
    if (!shadeData) { 
     return; 
    } 
    // From now on within this function, shadeData is truthy. 
}()); 

// shadeData is not necessarily truthy down here. 
console.log('shadeData:', shadeData); 

これは、通常は条件付きで呼ばれている(多くの場合、initという名前の)メインエントリ機能で実現されるだろう。

function init() { 
    // I am only run when shadeData is truthy. 
} 
if (shadeData) { 
    init(); 
} 
+0

ありがとう! 2番目のオプションを試していますが、まだshadeDataが定義されていません – user3006927

+0

これはif(shadeData)行によってスローされています。 if文がコードを終了しないようです。 – user3006927

+0

'return'だけが、コードの継続を止めることができます。しかし、明らかに 'if' /' else'構造は特定のコードが実行される条件を保証することができます。おそらく、あなたのコードの周りに投げている 'else {}'が必要でしょうか? 'if(shadeData){} else {codeThatIsThrowing();} } ' –