2017-12-31 195 views
-2

나는 프롬프트 주위에 표제를 만들어야한다. custumer 입력 값의 프롬프트를 잡아주고 결과를 만들기위한 함수에 eval 0120-함수를 전달합니다 (전체 문자열을 수학 연산자 ('+', '*'등 ...)로 변환).삐죽 소리가 나지 않는다.

원의 약속 - 평가 함수의 결과를 확인하고 평가가 (a) = 자리 경우! ->프롬프트 매번 반복 될 때 사용자 입력 프롬프트 숫자가 아닌 값 (에 '는 ',', '등 ...)

오류를 잡기위한 다른 부분 코드.

do { 
    var a = prompt('your number', '10-2*4'); 
} while (eval(a) != 'number'); 

try { 
    console.log(eval(a)); //must display 2 
} catch (e) { 
    console.log('Error: ', e); 
} 
+1

"원형"이 아닌 "루프"라고합니다. – Bergi

+1

'eval (a)! = 'number''는 의미가 없습니다. 이 조건은''number "'문자열을 입력해야만 만족할 수 있습니다. – Bergi

답변

1

eval(s) != 'number' 귀하의 테스트는 뭔가 같은 typeof eval(+s) !='number'

당신은 그것을 재귀 함수 만들 수 있어야한다 :

function doPrompt(){ 
 
    try { 
 
    // if this line throws error will go to catch 
 
    var res = eval(prompt('your number', '10-2*4')); 
 
    // do it again if we don't have a number, or return number 
 
    return typeof +res ==='number' ? +res : doPrompt() 
 
    }catch(e){ 
 
    return doPrompt(); 
 
    } 
 
}; 
 

 
var res = doPrompt(); 
 

 
console.log(res)

이는 <input>를 사용하여 많은 청소기 것을 대신에 더 나은 표시 능력을 허용합니다. 사용자에게 오류가 발생했습니다. prompt을 사용하면 매우 유연하지 않습니다.