2016-07-05 31 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所具有的混淆。 –