Почему эта функция JavaScript возвращает: «0: 0function toString () {[native code]}»? - PullRequest
4 голосов
/ 05 ноября 2010

Я взял следующую функцию с этого сайта и подключил ее к своему коду, чтобы отобразить удобную для пользователя строку времени на основе аргумента в миллисекундах.

Почему эта функция не работает?

    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] }

1 Ответ

7 голосов
/ 05 ноября 2010

Вы забыли () в своих звонках на «toString».

edit - извините, пришлось отойти на секунду.Как прокомментировал @Gareth, ссылки на «toString» синтаксически допустимы, так как они являются просто ссылками на функции.Таким образом, парсер не имеет проблем с вашим кодом.Что не так, если вы неявно преобразуете эти ссылки в строки.

Если вы просто добавляете () к каждому вызову, это должно работать намного лучше.Или, как та самая страница, на которую вы ссылались, указывает на несколько сообщений ниже, вам действительно не нужен .toString() вообще.

...