这是在阅读underscore(1.3.3)源码中看到的,它的each方法
var each = _.each = _.forEach = function(obj, iterator, context) { if (obj == null) return; if (nativeForEach && obj.forEach === nativeForEach) { obj.forEach(iterator, context); } else if (obj.length === +obj.length) { for (var i = 0, l = obj.length; i < l; i++) { if (iterator.call(context, obj[i], i, obj) === breaker) return; } } else { for (var key in obj) { if (_.has(obj, key)) { if (iterator.call(context, obj[key], key, obj) === breaker) return; } } } };
该方法里有一句
if (obj.length === +obj.length)
看半天没明白,后经人指点,这句等价于
if (typeof obj.length === 'number')
即是用来判断元素是否为数字类型的。typeof和Object.prototype.toString是常见的写法。而最后一种则不常见,常人难以理解。
一些库有类型判断的工具函数,如
function isNumber1(a) { return typeof a === 'number' }
又或者用Object.prototype.toString
function isNumber2(a) { return Object.prototype.toString.call(a) === '[object Number]' }
改成这种写法
function isNumber3(a){ return a === +a }
用各种类型测试下
var arr = ['1', true, false, undefined, null, {}, [], 1] for (var i=0; i<arr.length; i++) { console.log(isNumber3(arr[i])) }
结果只有数组最后的一项为true。即只有数字类型 a === +a 才为真。
为什么不用typeof,因为字符串比较理论上是需要遍历所有字符的,性能和字符串长度成正比。此外isNumber3的代码最少。
isNumber3可以满足编程过程中的多数需求,但并不代表它和isNumber1/isNumber2完全等价。比如NaN
isNumber1(NaN) // true isNumber2(NaN) // true isNumber3(NaN) // false
相关:
相关推荐
JavaScript的一个小程序,判断输入是否为数字
javascript版数字转化为中文传统的数字写法
【JavaScript源代码】JavaScript中判断的优雅写法示例.docx
JavaScript判断数字 很有用的小程序
本文主要介绍了javascript判断元素存在和判断元素存在于实时的dom中的方法。具有一定的参考价值,下面跟着小编一起来看下吧
JavaScript判断输入是否为数字类型的方法总结 前言 很多时候需要判断一个输入是否位数字,下面简单列举集中方法。 第一种方法 isNaN isNaN 返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。 ...
javascript常用判断函数大全 javascript常用判断函数 javascript常用判断函数
您可能感兴趣的文章:解析使用js判断只能输入数字、字母等验证的方法(总结)js判断输入是否为正整数、浮点数等数字的函数代码javaScript 判断字符串是否为数字的简单方法javascript使用isNaN()函数判断变量是否为数字...
javascript 编写跨浏览器的javascript兼容写法 js兼容
javascript和后台程序对比的缺点 1、不易读性; 2、不好调试性; ............ 有了以上特点,那么我们就要进行好的注释; javascript 注释的标准写法
JavaScript 判断用户输入的是否为空,是否为数字的Demo。
简单的javascript层的属性事件写法
该文档为javascript的数字格式化方法,可用于保留小数位,强制添0等操作
一个基于JavaScript的数字时钟,并且解决了时间在IE、Firefox中显示出现不同的问题。
107个常用Javascript语句参数写法
100多个很有用的javascript函数以及基础写法集合
js常用判断 搜集网络上零碎的js代码 比较全的javascript代码
主要介绍了Javascript判断文件是否存在的方法适用于客户端、服务器端,远程文件,示例代码如下,需要的朋友可以参考下
8、原生JavaScript判断是否为数字类型 9、原生JavaScript设置cookie值 10、原生JavaScript获取cookie值 11、原生JavaScript加入收藏夹 12、原生JavaScript设为首页 13、原生JavaScript判断IE6 14、原生JavaScript...
文本框 只能输入数字 或者是 字母 邮箱 电话的HTml 代码