5大于10! JS 比较判断的总结
众所周知,JS是一种弱类型的语言,在比较大小的时候对于比较值的类型的类型十分宽松,所以如果对于概念不是深入理解的话,经常会出现一些匪夷所思的错误。比如说:
> 1 < 2
\< ture
这是数的比较,十分容易理解,再比如数与字符串的比较:
> 1 < “2”
\< ture
因为JS会在比较的时候把判断符两端的值转换为相同的类型后在判断,再看一下以下示例:
> “1” < “2”
\< ture
也许你会说,1 > 2 这还用你说吗?这肯定是对的啊!到底有没有干货啊!那么请再看一下以下示例:
> “5” < “10”
\< false
什么?返回的不是ture吗?是的,你没有看错,5的确大于10了,JS没有按照基本法来。或者说JS没有按照大家印象里的基本法来。
JS :"5"为什么要小于"10"? 小明: 5当然小于10 。我小学体育老师都知道! JS :但这是字符串 "5" 和 "10" 啊! 小明:字符串了不起啊,JS会自动转类型啊! JS :字符串在什么条件下自动转类型? 小明:纳尼?等等。。
是啊,JS会在比较的时候把判断符两端的值转换为相同的类型后再判断。但如果类型已经相同呢?那还转个毛啊!!所以( “5”<”10” ) 比较的不是数值,而是字符串!
小明:字符串怎么比?请问还按基本法吗? JS : 拿头比! 小明:黑人问号???
拿头比怎么比?以( “5”<”10” )为例,从左往右开始,5小于1?肯定不啊,好,左边比右边大,值为false,答问收工。纳尼??恩,基本法就是这样。再来:(“ABCD”<”ACAA”),好,从左往右,A等于A,嗯下一个,B小于C,恩,右边大,值为true,答完收工。所以说,”9”比”8999999999”都大?是滴,就是这样。
小明:。。。JS好恶心。。。 JS : 这锅我不背。 小明:嘿嘿嘿 JS : 好诡异的笑容,你想干哈? 小明:数字1和字符串"a"怎么比啊? 1 < "a" ? JS : 你试试啊! 小明:试试就试试,我擦,怎么全是false;true被你吃了啊? JS : 因为字符串"a"转不成数字啊 小明:转不成数字你倒是转ascii码啊? JS :但是1是数字不是字符串啊,不能转ascii码,我要一视同仁! JS : 我反问一句,这要是可以,1<"abc" 怎么比?"abc"转ascii码是多少? 小明:转就转,97,算的是头一个字符,想唬我,没那么容易!想想JS还真是不靠谱! JS : 不按基本法来,臣妾真的做不到啊!
好了,是时候总结一波了。JS在做比较的时候,会先尝试把两边转为相同类型,如果不行就怎么比都是错,如果都是字符串,就从左到右按字符的ascii码,只要不同就是整个表达式的值。恩,简单无脑暴力一波带走。。。。
文章有错还请不吝指教!
5大于10! JS 比较判断的总结相关推荐
- html js 添加数据类型,js数据类型判断和转换
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 无论笔试还是面试,总会问到数据类型和隐式转换.今天彻底整理一下这块的知识,希望对大家有帮助. 看到下面的题,是不是 ...
- js 正则表达式判断价格
js 正则表达式判断价格 验证价格的正则 var reg = /(^1-9?(.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9].0-9?$)/; var money = 520.1 ...
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...
- JS中判断对象是对象还是数组
JS中判断对象是对象还是数组的方法 JS中判断对象是不是数组的方法 JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function ...
- js实现判断滚动条滚到页面底部并执行事件的方法
这里我主要介绍JS实现判断滚动条滚到页面底部并执行事件的方法: 需要了解三个dom元素,分别是:clientHeight.offsetHeight.scrollTop. clientHeight:这个 ...
- JS准确判断身份证号码
JS准确判断身份证号码 附带示意图 以及使用方法 //校验年月日专用isDate8(sDate) {if (!/^[0-9]{8}$/.test(sDate)) {return false;}var ...
- Js中判断变量存不存在的问题
前面写过jquery对象存在与否的判断.现在谈下Js中判断变量存不存在的问题. 如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行.注意,这种判断只要变量申明过, ...
- java语言显示运算时间_JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天...
本文主要向大家介绍了JAVA语言之ACM日期计算:输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. ACM日期 ...
- js/jQuery判断浏览器名称、内核版本、浏览器壳
1.js方法/* 判断浏览器名称和版本 目前只能判断:ie/firefox/chrome/opera/safari 2012年5月16日23:47:08 浏览器内核UA:UA; 浏览器内核名称:NV. ...
最新文章
- ZZ:new/delete 和malloc/free 的区别
- 就是好骑!骑ofo小黄蜂和舒畅早晨say hi,跟闹心堵车say bye
- C# 校验帮助类-正则表达式
- 2019年3月20日 894. All Possible Full Binary Trees
- 计算机网络复习_物理层
- 22张令人叹为观止的照片,你所未知的另一面
- 什么是心跳线?心跳线,主要用于主从服务器之间,是连接工作机与备份机的网线
- SQLite3中核心C API
- 14.bash(2) 与 环境变量
- Carrot2 聚类算法概要说明
- 存储过程和存储函数的区别
- JSOUP爬虫常见问题解决方法
- R语言 正态性检验 Q-Q plot shapiro test
- 含耦合电感元件的电路分析
- [渝粤教育] 西南科技大学 会计电算化 在线考试复习资料2021版
- win+r常用组合键大全
- 对keep-alive的理解是什么?
- 绝对让你怀疑人生的游戏榜,游戏建模跟《人类一败涂地》很相似
- EBS 并发请求 计划 fnd_conc_release_classes
- 软件测试相关简要记录