这是在阅读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的一个小程序,判断输入是否为数字
本示例“js 判断输入是否是数字.rar”提供了一个JavaScript代码的Demo,用于检查用户输入的内容是否为空或者是否全由数字组成。在实际应用中,这样的功能可以确保用户提交的数据符合预期格式,避免无效数据的提交。 ...
JavaScript 函数和基础写法大集合 JavaScript 是一种广泛应用于 Web 开发的编程语言,下面总结了 100 多个有用的 JavaScript 函数和基础写法。 输出语句 document.write("") 是 JavaScript 中最基本的输出语句,...
通过学习和理解这个“javascript经典特效---数字翻译成英语.rar”项目,开发者不仅可以掌握数字转换成英文的技巧,还能提升对JavaScript条件判断、字符串操作、函数封装等基础概念的理解。在实际应用中,这个功能...
JavaScript层的属性事件写法是前端开发中常见且基础的操作,它涉及到网页动态交互的核心。在JavaScript中,我们可以对HTML元素进行操作,设置其属性,响应用户触发的事件,从而实现丰富的用户界面。 首先,我们要...
此外,JavaScript还有其他很多内置的判断函数,如`isNaN`、`typeof`等,它们分别用于检测一个值是否为非数字和确定变量的类型。 在编写JavaScript代码时,正确使用这些判断函数能提高代码的健壮性和可维护性。理解...
该文档为javascript的数字格式化方法,可用于保留小数位,强制添0等操作
this.setCustomValidity('请输入5位整数和2位小数的数字'); } else { this.setCustomValidity(''); } }); }); ``` 在这个例子中,`#yourInputField`是需要验证的输入字段ID,当其值发生变化时,会触发验证函数...
JavaScript dom操作 删除元素 示例代码JavaScript dom操作 删除元素 示例代码JavaScript dom操作 删除元素 示例代码JavaScript dom操作 删除元素 示例代码JavaScript dom操作 删除元素 示例代码JavaScript dom操作 ...
在JavaScript中,对DOM元素进行判断和操作是前端开发中常见的任务。在本文中,我们将深入探讨如何判断一个元素在DOM中是否存在,以及如何判断它是否在可视的DOM中。 首先,我们来看如何判断元素是否存在于DOM中。...
在JavaScript中,对字符串进行数字判断是常见的操作,特别是在处理用户输入或者解析数据时。本文将详细介绍如何使用JavaScript来判断一个字符串是否可以转换为数字,以及需要注意的一些陷阱。 首先,我们要理解...
本篇文章将详细介绍几种在JavaScript中删除数组元素的方法,帮助开发者更好地理解和应用这些技巧。 1. **pop() 方法** `pop()` 方法用于删除并返回数组的最后一个元素。如果数组为空,它将不执行任何操作并返回 `...
8、原生JavaScript判断是否为数字类型 9、原生JavaScript设置cookie值 10、原生JavaScript获取cookie值 11、原生JavaScript加入收藏夹 12、原生JavaScript设为首页 13、原生JavaScript判断IE6 14、原生JavaScript...
从给定的文件信息中,我们可以总结出一系列重要的JavaScript知识点,涵盖了从基本语法到DOM操作、数据类型转换、流程控制以及浏览器API的使用等各个方面。下面是对这些知识点的详细解释和扩展: ### 1. 输出语句:`...
Firefox 浏览器可以通过判断 DOM 元素中是否存在 getBoxObjectFor 函数来确定,而 Firefox 的 userAgent 则可以通过字符串中包含“Gecko”和“Firefox”来判断,版本号则可以通过字符串中包含的数字来判断。...
### JavaScript 控制文本框输入数字知识点详解 #### 一、概述 在Web开发中,经常需要验证用户输入的数据是否符合预期格式。对于数值输入,尤其是涉及到金额或精确度较高的场景时,确保用户输入合法的数字变得尤为...
在这个程序中,我们通常会用到JavaScript的核心概念,包括时间处理、DOM操作以及可能的CSS动画来实现数字的动态变化。接下来,我将详细讲解如何创建一个基于JavaScript的倒计时程序,并涉及与图片数字相关的实现。 ...
JavaScript(简称JS)是一种广泛用于Web开发的轻量级脚本语言,它的功能强大且灵活,其中一项常见的任务就是判断一个变量是否为数字。在JS中,数字可以是整数或浮点数,甚至可以是正无穷、负无穷或者NaN(非数字)。...
1. **转换为字符串**:JavaScript中的数字没有内置的方法可以直接获取每一位的数字,所以我们通常会先将数字转换为字符串。使用`toString()`方法可以做到这一点。例如: ```javascript let num = 12345; let ...
在本文中,我们将讲解如何使用JavaScript语言来实现一个简单的数字配对游戏。游戏的规则相对简单,需要玩家在限定的时间内,通过记忆和逻辑推断来找出所有数字配对。下面将详细解释数字配对游戏的实现过程,包括游戏...