转自:http://www.cnblogs.com/snandy/archive/2012/08/01/2618815.html
Snandy停下来,思考才是进步的本质。
JS判断元素为数字的奇异写法
这是在阅读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
分享到:
相关推荐
### JS判断元素为数字的奇异写法解析 #### 背景介绍 在JavaScript编程过程中,经常需要对数据类型进行判断。例如,在处理数组时,我们可能需要知道数组中的某个元素是否为数字类型。通常情况下,我们会使用`typeof`...
将数字翻译成英语的JavaScript,可以自动判断出你输入的数字是多大,它会自动拼合,按亿、千万、百万的语法翻译出来,挺实用。
### 常用JS正则表达式写法详解 #### 1. 手机号码验证 在进行手机号码验证时,通常需要确保输入的是中国大陆有效的手机号码格式。根据描述中的代码示例,我们可以看到几种不同的正则表达式来匹配不同类型的手机号码...
在JavaScript(JS)编程中,判断两个数字的大小是一个基础而重要的操作。它广泛应用于各种场景,例如数据排序、用户输入验证等。本文将详细阐述在JavaScript中如何正确判断两个数字的大小,并通过实例演示错误和正确...
在JavaScript编程语言中,将阿拉伯数字转化为中文传统数字是一项实用的技术,尤其在处理财务、会计或者需要展示中文信息的场景下。本文将深入探讨如何使用JavaScript实现这一功能。 首先,我们需要了解中文数字的...
我们编写js代码时经常遇到复杂逻辑判的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂,那么如何更...
JavaScript 函数和基础写法大集合 JavaScript 是一种广泛应用于 Web 开发的编程语言,下面总结了 100 多个有用的 JavaScript 函数和基础写法。 输出语句 document.write("") 是 JavaScript 中最基本的输出语句,...
javascript和后台程序对比的缺点 1、不易读性; 2、不好调试性; ............ 有了以上特点,那么我们就要进行好的注释; javascript 注释的标准写法
JS(JavaScript)是广泛用于网页开发的一种编程语言。在日常开发中,掌握一些实用的编程小技巧,不仅能提高开发效率,还可以使代码更加优雅和健壮。接下来,我们将详细介绍一些JS中的小技巧,这些技巧有助于提升编程...
### JS验证数字方法详解 #### 一、背景介绍 在Web开发中,经常需要对用户输入的数据进行合法性检查,特别是当涉及到数字时。JavaScript作为前端脚本语言,提供了丰富的工具来帮助开发者完成这一任务。本文将详细...
把阿拉伯数字转为汉字写法比如123456789转化为零壹贰叁肆伍陆柒捌玖,以及几百几千几万的数字都可以转化
从给定的文件信息中,我们可以总结出一系列重要的JavaScript知识点,涵盖了从基本语法到DOM操作、数据类型转换、流程控制以及浏览器API的使用等各个方面。下面是对这些知识点的详细解释和扩展: ### 1. 输出语句:`...
数字田字格写法 数字田字格写法是一种特殊的写法,用于帮助人们更好地记忆和书写数字0-9。这种写法将数字与不同的物体或形状联系起来,使得数字更易于记忆和识别。下面是数字0-9的田字格写法详解: 0:像鸡蛋。...
[0-9]`匹配1到9之间的数字,后面跟着任意数量的0至9的数字,`(500000)*`则匹配500000的任意倍数。`|`符号用于连接两种可能的匹配模式。 此外,代码还检查了投资金额是否超过用户的账户余额。如果输入的投资金额无效...
这篇博客文章“IE、FF的JS兼容写法”探讨了如何编写能够同时在IE和FF下运行的兼容性JavaScript代码。 首先,我们需要理解这两个浏览器对于DOM(Document Object Model)操作的处理方式有所不同。例如,IE使用的是`...
JavaScript 中判断的优雅写法示例 在 JavaScript 中,判断语句是非常常见的,但是当判断条件变得复杂时,代码就会变得冗长、难以阅读。因此,我们需要优化我们的代码,使其变得更加优雅/highlights。 一元判断 ---...
多位数的写法是指用数字来表示大数的方法。这种方法可以帮助学生更好地理解和操作大数。 多位数的写法法则有两点:(1)从高位起,一级一级地往下写;(2)哪个数位上一个单位也没有就在那个数位上写0。例如,三亿...
JS 编写规范 JS 编写规范是前端开发中必不可少的一部分,它不仅可以提高团队协作效率和代码维护性,还可以输出高质量的文档。以下是 JS 编写规范的要点: 一、规范目的 JS 编写规范的主要目的是为了提高团队协作...
今天,我们将详细介绍阿拉伯数字的写法,从数字 0 到数字 9,我们将一步一步地指导您如何写出漂亮的阿拉伯数字。 首先,让我们从数字 1 开始。数字 1 的写法是从右上角开始,斜线到左下角,不是简单的将两角连起来...