JavaScript는 Nan이지만 그렇지 않다는 것을 알고 있습니까?
-
20-09-2019 - |
문제
다음 두 기능이 있습니다 ...
function splitTitleString(titleText)
{
var titleText = titleText;
var temp = new Array();
temp = titleText.split(' - ');
var now = new Date().getTime();
var warningExpResp = 7200000;
var expRespDateTimeTicks = 0;
var slaDateTimeTicks = 0;
if(temp[0].length > 0)
{
slaDateTimeTicks = getTicks(temp[0]);
}
if(temp[1].length > 0)
{
expRespDateTimeTicks = getTicks(temp[1]);
}
var returnTicksArray = new Array(slaDateTimeTicks,expRespDateTimeTicks);
return returnTicksArray;
}
그리고...
function warning(titleText, serverDateTime, warningLengthMins, warningType)
{
var warningLengthTicks = warningLengthMins * (60 * 1000);
var ticks = new Array(splitTitleString(titleText));
var sla = parseInt(ticks[0]);
var resp = parseInt(ticks[1]);
var serverTicks = getTicks(serverDateTime);
// some other work....
}
내가 가진 문제는 'resp'는 '진드기에도 불구하고 항상 난 이는 것입니다.1'가장 확실하게?
추신 : 난 아니에요 자바 스크립트 개발자는 코드가 좋지 않으면 친절하십시오.
해결책
당신의 splitTitleString()
배열 값을 반환합니다.
그러나 정의 할 때 ticks
, 당신은 말합니다 var ticks = new Array(splitTitleString(titleText));
. SplitTitLestring의 리턴 값 하나의 요소로 구성된 배열을 정의합니다.
결과적으로, ticks[0]
분명히 정수가 아니며 배열입니다!
편집 : 수정하려면 다음과 같이 기능을 다시 작성하십시오.
function warning(titleText, serverDateTime, warningLengthMins, warningType)
{
var warningLengthTicks = warningLengthMins * (60 * 1000);
//I removed the "new Array()" from the next line
var ticks = splitTitleString(titleText);
var sla = parseInt(ticks[0]);
var resp = parseInt(ticks[1]);
var serverTicks = getTicks(serverDateTime);
// some other work....
}
다른 팁
액세스하는 경우 resp
외부 warning()
기능, 문제는 사용하는 것입니다 var resp
, 당신은 볼 수있는 새로운 변수를 정의합니다 포함 함수 내에서만. resp가 글로벌 변수 인 경우 var
키워드와 당신은 괜찮을 것입니다.
JavaScript의 로컬 및 글로벌 변수에 대한 멋진 요약은 여기를 참조하십시오. 가변 범위 및 VAR 키워드
Pekka가 올바르게 말한 것 외에도 Parseint는 Radix 매개 변수를 선호합니다. 문서에서 :
radix 매개 변수가 생략되면 JavaScript는 다음을 가정합니다.
- 문자열이 "0x"로 시작하면 radix는 16입니다 (16 진수)
- 문자열이 "0"로 시작하면 radix는 8 (10 년)입니다. 이 기능은 더 이상 사용되지 않습니다
- 문자열이 다른 값으로 시작하면 radix는 10 (소수점)입니다.
"titletext"매개 변수로 전달하는 것은 실제로 int인지 확인하십시오. 내 말은 [1
제휴하지 않습니다 StackOverflow