JavaScript は NaN ですが、そうではないことは知っていますか?
-
20-09-2019 - |
質問
次の2つの機能があります...
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....
}
私が抱えている問題は、「ticks」であっても「resp」が常にNaNであることです1「間違いなくそうですよね?」
追伸:私はではありません JavaScript 開発者なので、コードが貧弱であっても優しくしてください。
解決
あなたのsplitTitleString()
は、配列値を返します。
ticks
を定義するときにしかし、あなたはvar ticks = new Array(splitTitleString(titleText));
を言います。あなたはsplitTitleStringの戻り値、エレメント1で構成される配列を定義します。
その結果、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パラメーターが省略されている場合、JavaScriptは次のとおりです。
- 文字列が「0x」で始まる場合、基数は16です(16進数)
- 文字列が「0」で始まる場合、基数は8(octal)です。この機能は廃止されました
- 文字列が他の値から始まる場合、基数は10(小数)です
あなたは「のTitleText」パラメータとして何を渡していることは確かにint型の場合は、確認してください。私が意味する、[1]
所属していません StackOverflow