2016-07-05 781 views
-2

未注释的行与注释(这是抓住mm并乘以60然后与ss连接)之间的区别是什么?我的substr方法在js中不工作

function getSeconds(str) { 
 
    // var mm = str.substr(0,2); 
 
    // var ss = str.substr(3,5); 
 
    // return mm*60+ss; 
 
    var nums = str.split(':'), 
 
    mm = +nums[0], 
 
    ss = +nums[1]; 
 
    return mm * 60 + ss; 
 
} 
 

 
getSeconds("13:25");

+0

在你使用'string'代替'str'您的注释代码。 –

+0

'String.prototype.substr()'的第二个参数是匹配子字符串的长度而不是结束索引,接受2个索引的函数是'String.prototype.substring()' –

回答

1

在工作示例,您明确地转换成字符串使用+前缀号码。

在注释过的例子中,你不是。分钟由于乘法而隐式转换为数字,但秒通过字符串连接简单地附加。

可以解决通过明确地将两个组件这个例子还有:

function getSeconds(str) { 
 
    var mm = +str.substr(0,2); 
 
    var ss = +str.substr(3,2); 
 
    return mm*60+ss; 
 
} 
 

 
console.log(getSeconds("13:25"));

+0

一个更明确的方式来转换为number使用'Number()'构造函数,只是使用'+'导致混淆作为OP所具有的混淆。 –