JavaScript中IF语句比较两个变量得到错误结果怎么解决?
问题核心原因
你从<textarea>元素的value属性获取到的内容是字符串类型,直接使用>=、<这类比较运算符时,会按照字符串的Unicode编码逐位比对,而不是按照数字大小比对:
- 比较
"10"和"2"时,首先比对第一位字符:'1'的Unicode编码小于'2'的编码,所以会直接判定"10" < "2",就会得到你遇到的错误输出。
修复方案
在比较前先把取到的字符串转换为数字类型即可,整数场景可以用Number()或者parseInt()转换,涉及小数可以用parseFloat()转换,修改后的start函数参考如下:
function start() { // 转换为数字类型后再赋值 var numberOne = Number(document.getElementById('one').value); var numberTwo = Number(document.getElementById('two').value); if(numberOne>=numberTwo) { document.getElementById('demo').innerHTML = numberOne + ' is bigger than ' + numberTwo; } else { document.getElementById('demo').innerHTML = numberOne + ' is smaller than ' + numberTwo; } }
修改后再测试,输入10和2时就会正确输出10 is bigger than 2。
内容的提问来源于stack exchange,提问作者dummycode
相关产品推荐
相关产品推荐

