Ошибка синтаксиса: неверный оператор возврата в JavaScript
Я получаю действительно странную ошибку JavaScript при запуске этого кода:
<script type = 'text/javascript'>
var ask = confirm('".$message."');
if (ask == false)
{
return false;
}
else
{
return true;
}
</script>
В консоли JavaScript это говорит:
Syntax Error: Illegal return statement
Это происходит при return true;
и return false;
(Я повторяю этот javascript из функции php; переменная $message
является одним из параметров php)
Что не так с моим кодом?
Ответы
Ответ 1
return
имеет смысл только внутри функции. В вашем коде нет функции.
Кроме того, ваш код достоин, если Департамент Департамента избыточности. Предполагая, что вы переместите его на правильную функцию, это будет лучше:
return confirm(".json_encode($message).");
EDIT намного позже: Измененный код для использования json_encode
для обеспечения того, чтобы содержимое сообщения не прерывалось только из-за апострофа в сообщении.
Ответ 2
Если вы хотите вернуть какое-то значение, сверните свой оператор в функцию
function my_function(){
return my_thing;
}
Проблема с оператором в 1-й строке, если вы пытаетесь использовать PHP
var ask = confirm ('".$message."');
ЕСЛИ вы пытаетесь использовать PHP, вы должны использовать
var ask = confirm (<?php echo "'".$message."'" ?>); //now message with be the javascript string!!
Ответ 3
в операторе возврата javascript используется только внутри функционального блока. если вы попытаетесь использовать оператор return внутри независимого, если else блокируете его синтаксическую ошибку: недопустимый оператор return в JavaScript
Вот мой пример кода, чтобы избежать такой ошибки:
<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 пример
Ответ 4
где вы пытаетесь вернуть значение?
для консоли в dev-инструментах лучше для отладки
<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>
Ответ 5
По моему опыту, чаще всего это сообщение об ошибке означает, что вы случайно приложили случайную замыкающую скобку, оставив остальные ваши высказывания вне функции.
Пример:
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
}
Ответ 6
Это может произойти в ES6, если вы используете неправильный (более старый) синтаксис для статических методов:
export default class MyClass
{
constructor()
{
...
}
myMethod()
{
...
}
}
MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works
MyClass.anotherMethod() //or
MyClass.anotherMethod = function()
{
return something; //does not work
}
Тогда как правильный синтаксис:
export default class MyClass
{
constructor()
{
...
}
myMethod()
{
...
}
static anotherMethod()
{
return something; //works
}
}
MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works