作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
所以如果我在做:
setInterval(function(){
console.log("1");
},Infinity);
它一直在记录 1
,就好像它是一个 for 循环
。为什么会有这种行为?
最佳答案
当 float/number Infinity
需要在 JavaScript 中转换为 32 位整数值时,就像 setTimeout 一样,它被转换为零:
console.log(typeof Infinity); // number
console.log(Infinity | 0); // 0
ECMA-262 6e Section 7.1.5
ToInt32 ( argument )
The abstract operation
ToInt32
convertsargument
to one of 232 integer values in the range −231 through 231−1, inclusive. This abstract operation functions as follows:
- Let number be
ToNumber(argument)
.ReturnIfAbrupt(number)
.- If number is NaN, +0, −0, +∞, or −∞, return +0.
- [...]
关于javascript - setInterval 无限大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34350928/
所以如果我在做: setInterval(function(){ console.log("1"); },Infinity); 它一直在记录 1,就好像它是一个 for 循环。为什么会有这种行为
我是一名优秀的程序员,十分优秀!