在console.log()时获取NaN

时间:2014-09-20 16:28:46

标签: javascript

我正在使用控制台进行HTML / JavaScript项目/游戏,而且我正在进行" ping"在里面。 但是当我运行这段代码时,我只能得到" NaN"。

function ping(IP){
    for (var i = 0; i <= 3; i++) {
        var start = new Date().getTime();
        console.log("64 bytes from " + IP + ": icmp_seq=" + i + " ttl=64 time: " + new Date().getTime() - start);
    };
}

3 个答案:

答案 0 :(得分:4)

-导致此字符串的隐式转换:

"64 bytes from " + IP + ": icmp_seq=" + i + " ttl=64 time: " + new Date().getTime()

NaN。您的行中的+-将从左到右进行评估,因此当您到达-时,您正在评估String - Number。在JS中,这会导致字符串转换为数字(如果无法转换,则为NaN),这显然不是您想要的。 NaN - anything仍为NaN

通过将(new Date().getTime() - start)括在括号中,首先完成数值运算,然后将String + Number加在一起。这会导致从数字到字符串的转换,因此您的console.log将按预期工作。

答案 1 :(得分:1)

你不能直接使用连接和数学......

" ttl=64 time: " + new Date().getTime() - start);

所以在括号中添加代码如下......

console.log("64 bytes from " + IP + ": icmp_seq=" + i + " ttl=64 time: " + (new Date().getTime() - start));

答案 2 :(得分:1)

function ping(IP){
   for (var i = 0; i <= 3; i++) {
       var start = new Date().getTime();
       var newTime = new Date().getTime() - start;
       console.log("64 bytes from " + IP + ": icmp_seq=" + i + " ttl=64 time: " + newTime);
   };
}