javascript - 传递给超时函数时小数点被删除了吗?

标签 javascript math floating-point settimeout

<分区>

我知道浮点变量在处理 0.1、0.2、0.3 等时需要变通办法,但这似乎很不寻常?

for(var i=0;i<10;i=i+1){

  console.log("before timeout" + i/10); //returns 0.1 0.2 0.3 etc

  setTimeout(function(){
    console.log("after timeout" + i/10); //returns 1 1 1 etc
  },1000); 

}

最佳答案

变量“i”始终为“10”,因为超时将在 for 循环后调用。所以你总是得到整数因为你把它除以 10

这样做是为了你好:)

for(var i=0;i<10;i=i+1){
  console.log("before timeout" + i/10); 

    setTimeout(function(i){
       console.log("after timeout" + i/10); 
     },1000, i);  
 }

关于javascript - 传递给超时函数时小数点被删除了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417282/

相关文章:

go - '%b'动词是 float 时输出什么

c++ - 将瓦片 map 解析为高效的水平和垂直边界框

java - 线程中的异常 "AWT-EventQueue-0"java.lang.NumberFormatException : empty String

javascript - 水平页面滚动的菜单

android - 如何从图像计算高度而又不与光源距离

c# - 在给定数据类型的限制内将值从一个任意范围映射到另一个范围

python - 测试带有 float 的元组的断言

javascript - jQuery - 类型错误 : callback is undefined

MediaWiki 中的 Javascript

javascript - 当对象可能是字符串时使用 'in'