摘要:众所周知,是弱类型的语言。因此在一些不注意的地方容易犯错误。通过得到这两个值,是字符串类型的数字,很显然返回之前已经了。反思虽然写的是弱类型的,但是在有明确类型的情况下,最好还是转换成对应的类型进行比较。
众所周知,js是弱类型的语言。因此在一些不注意的地方容易犯错误。在此记录一下前几天写代码的时候,判断两个值相比较的结果来进行下一步的操作。通过ajax得到这两个值,是字符串类型的数字,很显然返回之前已经toString()了。当时做比较的时候我也没有多想,我以为这两个值会自动转换成number类型来比较,结果就悲剧了。
代码如下
if(a>=b){ .... } //实际执行结果是 if("5">="10"){ .... } //结果值是 true
发现这个bug后,我马上更新了代码进行了to number操作,其实也很简单,对于明确的由number to string的值,只要进行 a = a*1;这样的操作就可以了。
疑问来了虽然bug很快就被解决了,但是我却陷入了思考,为什么"5">"10"呢?
开始实验、猜测我又测试了"5">"6","5">"11"等等,然后发现了规律,这两个值比较是依赖于字符串的第一个值的大小。
接下来我又验证了英文字母、汉字之间的相互比较,很快就有了猜测方向,很可能是根据ASCII值来进行比较的。然后就下班溜了。。。
今天查了一下资料,讲的很清楚小议js下字符串比较大小
一句话概括就是按照字典序进行对比。
反思虽然写的是弱类型的js,但是在有明确类型的情况下,最好还是转换成对应的类型进行比较。
早点上TypeScript的车吧
谁有TypeScript + React 相关资料麻烦分享一下,谢谢啦
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/105398.html
let和const let和const两者并不存在变量提升 这里要说明的是变量一定要在声明后使用,否则报错。 vara=[]; for(vari=0;i<10;i++){ a[i]=function(){ console.log(i); }; } a[6]();//10 变量i是var声明的,我们要知道这里在全局范围内都有效。我们要知道在每一次循环中,新的...
小编写这篇文章的主要目的,主要是给大家去进行讲解Django项目实例情况,包括celery的一些具体使用情况介绍,学习这些的话,对我们的工作和生活帮助还是很大的,但是怎么样才能够更快的进行上手呢?下面就一个具体实例给大家进行解答。 1、django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应。 但是我们在项目过程中会经常会遇到一些耗时的任务,比如:...
之前也有和大家讲过有关JS的对象创建和对象继承,本篇文章主要为大家做个汇总和梳理。 JS中其实就是原型链继承和构造函数继承的毛病,还有就是工厂、构造、原型设计模式与JS继承。 JS高级程序设计4:class继承的重点,不只是简简单单的语法而已。 对象创建 不难发现,每一篇都离不开工厂、构造、原型这3种设计模式中的至少其一! 那JS为什么非要用到这种3种设计模式了呢?? 我们先从对...
在过往学习的JavaScript都是在基础,现在为大家介绍更为深入的JavaScript知识。 JavaScript函数 JavaScript函数和Java函数是有一部分相似的,所以学习起来也会相对简单 基本构造 1.直接构造 //function代表函数标志,name为函数名称,参数可有可无 functionname(参数){ //... return; } 2....
阅读 3529·2023-04-26 00:05
阅读 934·2021-11-11 16:55
阅读 3491·2021-09-26 09:46
阅读 3491·2019-08-30 15:56
阅读 890·2019-08-30 15:55
阅读 2913·2019-08-30 15:53
阅读 1915·2019-08-29 17:11
阅读 784·2019-08-29 16:52