我正在使用控制台进行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);
};
}
答案 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);
};
}