四时宝库

程序员的知识宝库

javascript比较数字大小时,记得把比较对象转为数字类型

前几年,维护一个微商城的前端代码时,发现没库存的商品没显示售罄。

有问题的代码如下:

代码中的item_stock_pos和item_pre表示什么意思,我已忘记,只在我的开发日志中保留有这段代码。

obj[i]["item_stock_pos"] = "1204";
obj[i]["item_pre"] = "15"

if (obj[i]["item_stock_pos"] > obj[i]["item_pre"]) {
// 本以为执行这里
} else {
// 结果执行了这里
}


问题原因分析:

在比较两个操作对象的大小时,没有确保操作对象都为数字,导致了if判断没有执行预期的代码。


解决方法:

在比较两个操作对象的大小之前,先转换为数字。

方法1:使用parseInt()把字符串转换为数字。

obj[i]["item_stock_pos"] = "1204";
obj[i]["item_pre"] = "15";

obj[i]["item_stock_pos"] = parseInt(obj[i]["item_stock_pos"]);
obj[i]["item_pre"] = parseInt(obj[i]["item_pre"]);

if (obj[i]["item_stock_pos"] > obj[i]["item_pre"]) {
// ..
} else {
// ..
}


方法2:使用Number()把字符串转换为数字。

obj[i]["item_stock_pos"] = "1204";
obj[i]["item_pre"] = "15";

obj[i]["item_stock_pos"] = Number(obj[i]["item_stock_pos"]);
obj[i]["item_pre"] = Number(obj[i]["item_pre"]);

if (obj[i]["item_stock_pos"] > obj[i]["item_pre"]) {
// ..
} else {
// ..
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接