2010-11-05 312 views
4

我从this site中选取了以下函数,并将其插入我的代码中,以基于毫秒参数显示用户友好的时间字符串。为什么这个JavaScript函数返回:“0:0function toString(){[native code]}”?

为什么此功能不起作用?

function getTimeFromMillis(millis) 
    { 

     milliSecs = millis; 

     msSecs = (1000) 
     msMins = (msSecs * 60) 
     msHours = (msMins * 60) 
     numHours = Math.floor(milliSecs/msHours) 
     numMins = Math.floor((milliSecs - (numHours * msHours))/msMins) 
     numSecs = Math.floor((milliSecs - (numHours * msHours) - (numMins * msMins))/ msSecs) 


     if (numSecs < 10){ 
      numSecs = "0" + numSecs.toString 
     } 
     if (numMins < 10){ 
      numMins = "0" + numMins.toString 
     } 

     resultString = numHours + ":" + numMins + ":" + numSecs  
     return resultString; 

    } 

如果我通过它从我的调用函数毫秒值我得到这个:

0:0function toString() { [native code] }:0function toString() { [native code] } 

回答

6

你在你的呼叫“的toString”忘了()

编辑 —抱歉不得不离开一秒钟。正如@Gareth所评论的那样,对“toString”的引用在语法上是有效的,因为它们只是对函数的引用。因此,解析器对您的代码没有任何问题。当你隐式地将这些引用转换为字符串时,会出现什么问题。

如果您只是将()添加到每个调用中,它应该会更好。或者,正如你链接的那个页面进一步指出了一些帖子,你根本不需要.toString()

+0

具体来说,代码'“0”+ numMins.toString'是为*函数*添加一个*字符串*。 Javascript通过将函数转换为字符串来实现这一点,它通过输出函数的源代码(或者,对于内置函数来说是隐含的[native code] – Gareth 2010-11-05 14:16:50