2012-11-02 5 views
0

학교 숙제를 위해 Javascript로 계산기를 만들고 있는데 eval() 함수를 사용하고 있습니다. 예, 압니다, eval은 악의입니다. 그러나 저는 이것을 이미 확보 했으므로 확신 할 수 있습니다. 따라서 그것을 악용 할 방법이 없습니다.Javascript - 유효하지 않은 응답 eval()

eval은 텍스트 상자의 값을 대답으로 변환 한 다음 다른 텍스트 상자에 표시합니다. 그러나 구문이 잘못되었을 때 (예를 들어, 사용자가 "1 ++ 2"를 입력 할 때) 스크립트가 어떤 종류의 오류를 표시하면 좋을 것입니다. 그러나 eval() 입력이 유효하지 않은 경우 사라지는 것 같습니다. 아무런 가치도없고 오류도 발생하지 않습니다. (글쎄요, 크롬은 'Uncaught Syntaxerror'로 설명하려고 시도하지만, 저에게는 유용하지 않습니다.) 그래서 사용자가 구문을 엉망으로 만들면 어떻게해야하는지 스크립트에 설명 할 방법이 없습니다.

TL : DR : eval()에 잘못된 입력이 있으면 스크립트에서 오류 메시지를 표시하게하려면 어떻게해야합니까? 사전에

감사

+1

스크립트는 아무 것도 반환하지 않으며 잘못된 구문입니다. 수학에서 1 ++ 2는 아무런 의미가 없습니다. – user1795693

답변

3

그것은 throw의 (제기) 당신이 원하는대로 당신이 할 수있는 catch (핸들)과 할 예외 : 당신은 시도의 catch 블록을 우아하게 사용해야합니다

var s; 
try 
    { s = eval('1++2'); } 
catch(e) 
    { s = e; } 
// now s is either the result, or the exception-info 
+0

지금까지 완벽하게 작동했습니다. 감사합니다! – user1795693

+0

@ user1795693 : 환영합니다! – ruakh

1

사용자에게 오류가 발생했음을 보여줍니다.

+0

뭔가를 '반환'해야 할 수도 있습니다. – Blender

+0

try-catch 메서드는 이미 언급되었으며 완벽하게 작동합니다. 감사합니다! – user1795693

관련 문제