小白求解 JS 问题

qq_28011675 2015-05-07 05:49:32


输入90-99提示ok
输入900也可以提示ok
为什么输入100多200这些会显示no?
求各位大神讲解
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
张运领 2015-05-07
  • 打赏
  • 举报
回复
字符串做运算时,并不是把所有的都会转换为数字,只有做那些只有数字才包含的运算方法时,才会转换为数字,比如减法和乘法,而加法,在字符串运算中也存在,那么就会以字符串的加法执行。 比如: 1+“2” = ? 1 - “2” = ? 就是这个道理。 既然你这里说到转换了,我就顺便说一个问题了: a = "1234"; b = "1234a"; 对于上述的a和b,分别执行下面的运算: parseInt(a); a - 0 a >> 0 Number(a) 把a换成b,再执行一遍,有什么区别,在哪些时候,哪种变化是更好的,可以想想,这是一个技巧,以后会有帮助。
张运领 2015-05-07
  • 打赏
  • 举报
回复
对比字符串,是对比他们对应的ASCII码的,而且是逐位对比,比如1对应的ASCII码是永远小于2的ASCII的,所以2开头的再小的字符串,都会比1开头的再大的字符串大,如果开头的数字时相同的,就继续对比后面的,如果前面对比出来,就直接返回结果了,所以才有“2”>"100"这个是true的情况,而减法是只有number类型才有的操作方式,所以会先把字符串转换成数字,再做减法,执行减法之后的结果,也会是number类型的,这个时候,使用数字的大于小于判断,才有效的。 说的有什么疑问,可以再说,我看到了就会回复你的。
qq_28011675 2015-05-07
  • 打赏
  • 举报
回复
@zyl_lyr1019 第一次上csdn 不知道@人有没用 怎么才能把问题分给你= =
qq_28011675 2015-05-07
  • 打赏
  • 举报
回复
@zyl_lyr1019 是不是说字符串在做运算的时候会把字符串转换为number型 如:"2"-"1111">0 但是在做对比的时候 “2”>"1111" 是怎么识别的呢 为什么“900”>"90"是 true , 但是"800">"90"却是 false?
Zerolone 2015-05-07
  • 打赏
  • 举报
回复
楼上正解,,,
张运领 2015-05-07
  • 打赏
  • 举报
回复
不要对比字符串,字符串中 “2”>"1111"是为true的 你判断数字时,用减法就行 "2"-"1111">0,这样判断,是可以判断大小的。

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧