2012-12-06 3 views
2

여기 내 작은 디버깅 경고입니다. 거의 모니터를 창문 밖으로 던져 버렸습니다. 강조 표시된 코드 만보십시오. 지구상의 어떤 조건에서이 경고가 그렇게 촉발 될 수 있습니까? - http://i.stack.imgur.com/nrf1x.png미쳐 버리거나 jsFiddle 버그가 있습니까?

여기

전체 바이올린은,하지만 난 그게 중요하다고 생각하지 않는다된다 http://jsfiddle.net/Timson/QqVrF/8/

if (currLoad > maxload){ 
    alert("I am dumbass, I think that "+currLoad+' is more than '+maxload); 
} 
+0

내가 피들에있는 버튼을 누르면 그 오류가 발생하지 않습니까? 해야합니까? 일어날 때까지 코드를 줄일 수 있습니까? 그런 다음 다시 빌드 할 때까지 다시 빌드하십시오. –

+0

나는 어떤 언어라도 읽을 수 없으며 문제를 가장 단순한 형태로 재현하거나 줄이기위한 단계를 제공 할 수 있습니까? – jbabey

답변

4

는 변수가 두 문자열이 가능성이 있습니까? 자바 스크립트 콘솔에서 :

6 > 1000 
    false 

"6" > "1000" 
    true 
0

시도 : 이전 답변으로

if (parseInt(currLoad) > parseInt(maxload)){ 
      alert("I am dumbass, I think that "+currLoad+' is more than '+maxload); 
     } 

는 아마 그들이 문자열 있도록 양식 입력에서이 값을 얻을

0

.. 문자열을 비교하고있다. 문자열 비교는 숫자와 다르므로 "6" > "1000"이 참이고 6 > 1000이 거짓 일 때 참입니다.

양식 입력에서 얻은 각 숫자는 숫자로 간주되는 경우 number로 구문 분석되어야합니다. 예를 들어 parseInt 또는 Number 기능을 사용합니다. 예 : parseInt(currLoad, 10)

+0

맞습니다.하지만 다른 연산자는 수동으로 데이터 형식을 변환하지 않고도 잘 작동하므로 혼란 스러웠습니다. 추가, 나누기 및 곱하기. JS 자동 데이터 형식 변환이 저를 망쳤다 고 생각합니다. – Timson

+0

맞습니다. 정말로 조심해야합니다. 예 : 곱하기 연산자는 JS의 숫자로만 작동하므로 문자열을 숫자로 변환합니다. 그러나 '<, >, +'같은 다른 연산자는 문자열에서도 작동합니다. 예를 들어, number와 string에'+'연산자를 사용하면 number를 string으로 변환하고 연결합니다. 그러나 '<' and '>'은 반대로 작동합니다. – dreame4