programing

구문 오류 : JavaScript의 잘못된 반환 문

sourcetip 2021. 1. 14. 23:44
반응형

구문 오류 : 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;

(나는이 자바 스크립트를 PHP 함수에서 반향하고 있으며 $message변수는 PHP 매개 변수 중 하나입니다)

내 코드에 어떤 문제가 있습니까?


return함수 내에서만 의미가 있습니다. 코드에 기능이 없습니다.

또한 중복성 부서의 경우 코드가 가치가 있습니다. 적절한 기능으로 이동한다고 가정하면 다음과 같이 더 좋습니다.

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

훨씬 나중에 편집 : json_encode메시지의 아포스트로피 때문에 메시지 내용이 깨지지 않도록 코드를 사용 하도록 변경했습니다 .


일부 값을 반환하려면 명령문을 함수로 래핑하십시오.

function my_function(){ 

 return my_thing; 
}

PHP를 사용하려는 경우 첫 번째 줄의 문에 문제가 있습니다.

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

PHP를 사용하려는 경우 다음을 사용해야합니다.

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

javascript return 문에서는 함수 블록 내에서만 사용됩니다. 독립적 인 내부에서 return 문을 사용하려고하면 else 블록이면 구문 오류가 발생합니다. 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 예제를 확인하십시오


값을 어디에서 반환하려고합니까? 개발 도구에서 콘솔에 연결하는 것이 디버깅에 더 좋습니다.

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

내 경험상 대부분의 경우이 오류 메시지는 실수로 닫는 중괄호를 어딘가에 넣어 나머지 명령문을 함수 외부에 두 었음을 의미합니다.

예:

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
}

정적 메서드에 대해 잘못된 (이전) 구문을 사용하는 경우 ES6에서 발생할 수 있습니다.

export default class MyClass
{
    constructor()
    {
       ...
    }

    myMethod()
    {
       ...
    }
}

MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works

MyClass.anotherMethod() //or
MyClass.anotherMethod = function()
{
   return something; //doesn't work
}

올바른 구문은 다음과 같습니다.

export default class MyClass
{
    constructor()
    {
       ...
    }

    myMethod()
    {
       ...
    }

    static anotherMethod()
    {
       return something; //works
    }
}

MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works

참조 URL : https://stackoverflow.com/questions/16068278/syntax-error-illegal-return-statement-in-javascript

반응형