2013-04-17 11 views
33

における違法return文私はこのコードを実行すると、私は本当に奇妙なJavaScriptエラーを取得しています:JavaScriptで構文エラー:JavaScriptの

<script type = 'text/javascript'> 
var ask = confirm('".$message."'); 
if(ask==false) 
{ 
return false;  
} 
else 
{ 
return true; 
} 
</script> 

慰めることは言う:

Syntax Error: Illegal return statement

それが発生しましたreturn true;return false;

(私はこのjavascriptをphp関数からエコーしています; $message変数はPHPのパラメータの1つです)

私のコードに何が問題がありますか?

+1

リターン・ステートメントは、関数のみの内部で許可されています。あなたの例でreturn文を使って達成しようとしていることは何ですか? –

+10

人のためにこの問題を捜しているときに、 '{'や '}'がない場合にもこのエラーが出る可能性があります。 – Gavin

答えて

59

returnは、関数内でのみ意味があります。あなたのコードには関数はありません。

また、あなたのコードは冗長部門のDepartmentであれば価値があります。あなたは適切な機能に移動仮定すると、これは良いだろう:

return confirm(".json_encode($message)."); 

EDITずっとずっと後:変更したコードは、理由だけでメッセージにアポストロフィを壊さないメッセージの内容を保証するためにjson_encodeを使用します。

+0

ああ...私はphp関数の中でこれを書いていたので、値を返そうとしていました。助けてくれてありがとう: – imulsion

+0

それは私のコードの文脈では良くないでしょう...私はなぜか説明するのに気にしません。それはとても信じられないほど複雑です – imulsion

3

あなたには、いくつかの値を返すようにしたい場合は、あなたがあなたであればPHP

var ask = confirm ('".$message."'); 

を使用しようとしている場合は、問題が第一ライン上の文である

機能に

function my_function(){ 

return my_thing; 
} 
をあなたの文を包みますあなたが使用する必要がありますPHPを使用しようとする

var ask = confirm (<?php echo "'".$message."'" ?>); //now message with be the javascript string!! 
0

JavaScriptのreturn文でのみ使用内部機能ブロック。ここではJavaScript

における違法return文は、私のコード例では、このようなエラーを回避することです:

<script type = 'text/javascript'> 
(function(){ 
    var ss= 'no'; 
    if(getStatus(ss)){ 
     alert('Status return true'); 
    }else{ 
     alert('Status return false'); 
    } 

    function getStatus(ask){ 
     if(ask=='yes') 
     { 
     return true;  
     } 
     else 
     { 
     return false; 
     } 
    } 
})(); 
</script> 

Jsfiddle例に

0
を確認してください、あなたは他のブロックは、それが構文エラーをトリガした場合に独立した内部でreturnステートメントを使用しようとします

ここで値を返そうとしていますか?開発ツールにコンソールに は、私の経験では

<script type = 'text/javascript'> 
var ask = confirm('".$message."'); 
function answer(){ 
    if(ask==false){ 
    return false;  
    } else { 
    return true; 
    } 
} 
console.log("ask : ", ask); 
console.log("answer : ", answer()); 
</script> 
0

をデバッグするための優れている、ほとんどの場合、このエラーメッセージは、関数の外あなたの文の残りの部分を残して、どこかで偶然の閉じ括弧を入れていることを意味します。

例:

function a() { 
    if (global_block) //syntax error is actually here - missing opening brace 
     return; 
    } //this unintentionally ends the function 

    if (global_somethingelse) { 
     //Chrome will show the error occurring here, 
     //but actually the error is in the previous statement 
     return; 
    } 

    //do something 
}