为什么对于可被10整除的数字,字符串到int之间的转换不能像预期的那样工作
Why conversions between string to int not working as expected for numbers divisible by 10?
如果在"for"循环中使用parseInt,它适用于所有情况。但在这个例子中,它在99-100或999-1000这样的情况下不能正常工作。这里发生了什么?隐含的转换是错误的吗?
function buggy10000(value)
{
var r = value.split("-");
var len=r.length;
var j;
if(len==2)
{
console.log("For in RANGE " + r[0]+"<-->"+r[1]);
for(j=r[0];j<=r[1];j++)
{
console.log(j);
}
}
}
buggy10000("98-99");
buggy10000("99-100"); //for not working as expected
buggy10000("100-102");
因为:"98"<="99"(字符串比较)
"100"<="102"
但"99">"100"
只有在调用j++时才会出现转换,但对于第二种情况(99-100),由于循环条件失败,转换从未发生。
function buggy10000(value)
{
var r = value.split("-");
var len=r.length;
var j;
if(len==2)
{
console.log("For in RANGE " + r[0]+"<-->"+r[1]);
for(j=r[0]*1;j<=r[1]*1;j++) <----Modified
{
console.log(j);
}
}
}
它有效吗?
这是一个类型转换问题,它与比较有关。将字符串传递给函数,拆分字符串,然后进行比较。JS在比较字符串而不是整数时会感到困惑。
我将您的函数重写如下,以便将这些值显式解析为整数,现在它的工作方式正如您所期望的那样。
function buggy10000(value)
{
var r = value.split("-");
var len=r.length;
var j;
if(len==2)
{
console.log("For in RANGE " + r[0]+"<-->"+r[1]);
r[0] = parseInt(r[0]);
r[1] = parseInt(r[1]);
for(j=r[0];j<=r[1];j++)
{
console.log(j);
}
}
}
相关文章:
- CSS-转换在JavaScript for循环中不能正常工作
- ClassCastException - JavaScriptObject 不能强制转换为 java.lang.Stri
- 为什么对于可被10整除的数字,字符串到int之间的转换不能像预期的那样工作
- 输入的第一个字母.value;t不能转换成大写字母
- Json Object不能使用parse.com云功能Android强制转换为Float
- 将1个整数转换为1.0-(不能是字符串)
- CSS转换没有'当添加事件上隐藏的溢出时,不能在FF中工作
- 简单的Javascript对html文本框转换.不能工作两次
- 不能使用StackExchanges's PageDown将markdown转换为HTML
- 如何解决TypeError:不能在函数中将未定义或null转换为对象.键(& lt; anonymous>)
- 不能转换成正确的格式日期&来自fullcalendar事件对象的小时
- 不能让Vue.js转换工作
- 不能使用THREE.JSONLoader加载从FBX转换到JSON模型
- 不能在缩放0和1之间使用css转换
- 学习Backbone.js -不能转换'this.model'对象
- Jquery转换为单词不能正常工作
- 不能将Nan转换为Class
- 当使用hasOwnProperty时,不能将null或undefined转换为对象
- Angular转换不能在两个控制器之间工作
- ibmmobilefirst-Class Cast:java.lang.String不能转换为org.mozilla.j