近期写js库中遇到的一个判别的问题
2015-04-18 22:46
120 查看
最近在写一个自己的js库,正写到数组包,在里面定义了一个排序,只对纯数字数据进行排序的方法,但是在测试的时候发现一个很诡异的问题,那就是传入一个对象的时候,它没有返回erroemsg而是返回了对象,上代码:
这是用的冒泡排序来进行数据排序的,可是传入对象后,没有返回-2.
在大神的帮助下,知道了,原来在传入对象的时候,object.length会返回undefined,然后undefined在下面的max<j中会有一个隐式的类型转换变为NaN,然后for循环直接跳出return -2,不会throw error
所以在这里,最难想到的是object.length会返回undefined,然后下面的转换,
我试过传入null,则trycatch成功返回-2,而undefined也同样正确返回-2,所以这是一个特例,还是要注意一下。
array.sort=function(a){//only for num try{ if(!a.some(function(x){return(typeof("string"))})){ var max=a.length-1; for(var j=0;j<max;j++){ for(var i=0;i<max;i++){ if(a[i]>=a[i+1]){ var tem=a[i+1]; a[i+1]=a[i]; a[i]=tem; } } } return a; } return -2 } catch(ex){ return -2; } }
这是用的冒泡排序来进行数据排序的,可是传入对象后,没有返回-2.
在大神的帮助下,知道了,原来在传入对象的时候,object.length会返回undefined,然后undefined在下面的max<j中会有一个隐式的类型转换变为NaN,然后for循环直接跳出return -2,不会throw error
所以在这里,最难想到的是object.length会返回undefined,然后下面的转换,
我试过传入null,则trycatch成功返回-2,而undefined也同样正确返回-2,所以这是一个特例,还是要注意一下。
相关文章推荐
- 一个朋友js图表开发遇到的问题 解决思路c和js
- js初学者常遇到的一个for循环中onclick问题
- 近期一个称重设备微信端开发前端知识点,及使用插件遇到的常见问题
- 项目中遇到的一个js页面加载问题
- 今天再做上传图片时候遇到了一个JS 图片预览问题
- 今天再做上传图片时候遇到了一个JS 图片预览问题
- 遇到的一个JS原型的问题,已经解决
- js函数参数传值的时候遇到的一个小问题
- 遇到的有关js继承和原型链的一个问题
- js 遇到的问题-使用for循环给同一个文本框赋值
- 关于angular瀑布流插件ng-infinite-scroll.min.js遇到一个奇葩问题
- 今天遇到的一个小坑,js传参 转义符(\)的问题
- EasyUI的Model的Model Window,但是遇到一个问题,就是如何把jsp页面中js的变量传入模态框中input的value
- 遇到的一个关于功能IO口的问题
- 使用PyCharm遇到的一个小问题及解决方案
- js中当数字和字符串合作时一个有趣的问题
- 关于Android7.0系统使用webview遇到的一个问题(二级跳转后界面空白)
- 问题:关于贴友一个用js传递value默认值的简单实现
- 遇到一个问题,标记下
- js中的一个超郁闷问题(有关字符串的length比较问题)