我刚刚加入到JavaScript阵营中,我一直没有找到关于(+Var)这个符号的任何信息。
请看《Convert HH:MM:SS string to seconds only in javascript》这篇文章中中答案部分。
// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]);
我也想使用这个代码进行转换,但上述方案显然不严谨,如果用户如'xx:03:ss'这个值并非NaN,所以我修改了代码,效果更佳,如下:
function convertHHMMSSToSeconds(time) {
// initialize seconds
var seconds = 0;
//ensure time
if (!time) {
return seconds;
}
try {
var hmsTab = time.split(':'); // split it at the colons
// ensure that the hmsTab contains 3 values (hh,mm,ss)
if (!hmsTab || hmsTab.length !== 3) {
return seconds;
}
// initialize hh, mm and ss
var hh = hmsTab[0] > 0 && hmsTab[0] < 60? +hmsTab[0] : 0;
var mm = hmsTab[1] > 0 && hmsTab[1] < 60 ? +hmsTab[1] : 0;
var ss = hmsTab[2] > 0 && hmsTab[2] < 60 ? +hmsTab[2] : 0;
// return 0 if one variable is not valid
if(+hmsTab[0] !== hh ||+hmsTab[1] !== mm || +hmsTab[2] !== ss) {
return seconds;
}
// minutes are worth 60 seconds. Hours are worth 60 minutes.
seconds = (hh * 60 * 60) + (mm * 60) + ss;
}catch (error)
{
seconds = 0;
}
return seconds && seconds>0 ? seconds : 0;
这只是个小插曲,我的问题依然是(+Var)到底代表什么意思?
原问题:What does (+var) means [duplicate]
变量前加上+后,变量将转换为数字,进行数字运算。比如:
赋予x值为3,y=x + 3,运算结果为310,其中的+号为连接作用,这不难理解。z=+x + 10,运算结果为13,这是将+x的值3与后方的10做数字运算,所以结果13,这就是+var的用意。