2015-02-02 2 views
1

이 자바 스크립트 코드가 작동하지 않습니다.자바 스크립트의 return 문 오류

function myfun() 
    { 
     return 
     { 
     alert("para"); 
     } 
    }; 

    myfun(); 

자바 스크립트의 자동 세미콜론 삽입에 대해 읽었습니다. 위 코드를 다음과 같이 수정했습니다 : unexpected token ( : 여전히 오류가 발생했습니다.

return{ 
     alert("para"); 
     } 

왜 그런지 궁금합니다.

참고 : 솔루션이 필요하지 않지만 위의 코드가 작동하지 않는 이유에 대한 설명이 필요합니다. 좋은 부품, return 문이 반환 값이 반환 표현으로 같은 줄에 있어야합니다 경우 자바 스크립트 책에 따르면,

편집

.

return { 
status: true 
}; 

return 
{ 
status: true 
}; 

function myfun(para) 
    { 
    var status; 

     return 
     { 
      status : alert(para) 
     }; 
    }; 


    myfun("ok"); 

더 error.It가 작동하지 않습니다 생산 와서 어떻게 wrong.Then하지만 well.It 같은 오류를 보여줍니다 {이 반송과 동일한 줄에있을 때 작동합니다.

return { 
    alert("para"); 
} 

{...}에서

function myfun(para) 
    { 
    var status; 

     return{ 
      status : alert(para) 
     }; 
    }; 

    myfun("ok"); 
+0

'경고'주위의'{}'은 무엇을해야할까요? – Thilo

+0

아무것도 아니고,'return alert ("para")'는 완벽하게 작동합니다. 난 왜 위의 하나가 작동하지 않는지 알고 싶다. – suman

+1

실제로 경고를 반환하는 것은 경고가 표시된다는 것을 제외하고는 'undefined'를 반환하는 것과 같습니다. – Teemu

답변

5

즉,이 object literal로 해석됩니다. 객체 리터럴은 다음 형식을 갖습니다.

{ 
    key: value, 
    //... 
} 

객체 리터럴은 임의의 명령문을 포함 할 수 없습니다.

0

JS가 키 "para"에 대한 값을 기대하기 때문에 그 오류가 발생하는 이유가 있습니다.

JavaScript 기능으로 돌아갈 필요가 없습니다. 당신의 의도가 제어 함수에가는 경우 테스트하는 경우 문자열 객체를 반환하려는 경우, 당신은 단순히

function myfun() { alert("para"); } 

으로 변경할 수 있습니다 "파라는"당신은

function myfun() { return { "text": "para" }; } 
2
로 변경해야

ASI으로 어려움을 겪었으며 실행 시간과 구문 분석 시간의 차이가있는 것처럼 보입니다.세미콜론이 자동으로 삽입됩니다

return 
{ // ^-- ASI will insert a semicolon here 
    status: true 
}; 

을하고 런에서 :

return { 
    status: true 
}; 

객체를 반환하는 올바른 방법은

곳으로, ASI는 다음 코드에서 조치를 취할 것return 이후의 모든 행은 무시됩니다. 그러나 구문 분석 시간이 일 때 이면 모든 것이 중요하며 첫 번째 예와 같이 구문 오류가있는 경우 오류가 발생합니다.

+0

오. ASI는 공백이 중요하지 않다고 생각하는 사람들에게 놀라운 행동으로 이어질 수 있습니다. 추잡한... – Thilo