题
我有以下两种功能...
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....
}
我的问题是'或'总是南虽然'蜱1 最肯定是什么?
PS:我不是一个 JavaScript 开发所以请不错的如果这是可怜的代码。
解决方案
您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正确地说,确给出更喜欢有一个基数的参数。从文档:
如果基数的参数被省略, JavaScript假定如下:
- 如果串的开始"0x", 基数是16(十六)
- 如果的 串的开始"0"时,基数为8 (八).这一特征被弃用
- 如果串的开始与任何其他 值,基数为10(小)
什么是你传递的“titleText”参数,检查它是否确实是一个int。我的意思是[1]
不隶属于 StackOverflow