2013-04-17 25 views
33

Tôi nhận được một lỗi JavaScript thực sự kỳ lạ khi tôi chạy mã này:Cú pháp lỗi: Lệnh return bất hợp pháp trong JavaScript

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

Trong JavaScript an ủi nó nói:

Syntax Error: Illegal return statement

Nó xảy ra tại return true;return false;

(Tôi đang lặp lại javascript này từ một hàm php;Biếnlà một trong các tham số php)

Điều gì sai với mã của tôi?

+1

Return-báo cáo chỉ được phép trong các chức năng. Bạn đang hy vọng đạt được điều gì với câu trả lời trong ví dụ của bạn? –

+10

Đối với những người Googling vấn đề này, bạn cũng có thể nhận được lỗi này nếu bạn đang thiếu một '{' hoặc '}'. – Gavin

Trả lời

59

return chỉ có ý nghĩa bên trong một hàm. Không có hàm nào trong mã của bạn.

Ngoài ra, mã của bạn cũng xứng đáng nếu Bộ dự phòng. Giả sử bạn di chuyển nó đến một chức năng phù hợp, điều này sẽ tốt hơn:

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

EDIT nhiều hơn thế sau: Mã Thay đổi để sử dụng json_encode để đảm bảo các nội dung tin nhắn không phá vỡ chỉ vì một dấu nháy đơn trong tin nhắn.

+0

ah ... oops ... vì tôi đã viết điều này bên trong một hàm php tôi đang cố gắng trả về các giá trị.cảm ơn sự giúp đỡ của bạn :) – imulsion

+0

mà sẽ không được tốt hơn trong bối cảnh của mã của tôi ... tôi thậm chí không thể được bothered để giải thích tại sao; nó cực kỳ phức tạp – imulsion

3

Nếu bạn muốn quay trở lại một số giá trị sau đó quấn tuyên bố của bạn trong chức năng

function my_function(){ 

return my_thing; 
} 

Vấn đề là với tuyên bố trên dòng 1 nếu bạn đang cố gắng sử dụng PHP

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

NẾU bạn cố gắng sử dụng PHP, bạn nên sử dụng

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

trong câu lệnh return javascript chỉ được sử dụng bên trong khối chức năng. nếu bạn cố gắng sử dụng lệnh return bên độc lập nếu khác chặn nó gây ra lỗi cú pháp: tuyên bố trở lại bất hợp pháp trong JavaScript

Đây là mã ví dụ của tôi để tránh lỗi như vậy:

<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> 

Vui lòng kiểm tra Jsfiddle dụ

0

bạn đang cố gắng trả lại giá trị ở đâu? để an ủi trong các công cụ dev là tốt hơn để gỡ lỗi

<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

Theo kinh nghiệm của tôi, thường xuyên nhất thông báo lỗi này nghĩa là bạn đã đặt dấu ngoặc đóng ngẫu nhiên ở đâu đó, để lại phần còn lại của báo cáo của bạn bên ngoài hàm.

Ví dụ:

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 
}