整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

五种js判断是否为整数类型方式

篇文章主要介绍了五种JavaScript判断是否为整数类型方式,需要的朋友可以参考下

这篇看看如何判断为整数类型(Integer),JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示,和Java的double类型一样。但实际操作中比如数组索引、位操作则是基于32位整数。

方式一、使用取余运算符判断

任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。

以上输出可以看出这个函数挺好用,但对于字符串和某些特殊值显得力不从心

对于空字符串、字符串类型数字、布尔true、空数组都返回了true,真是难以接受。对这些类型的内部转换细节感兴趣的请参考:JavaScript中奇葩的假值

因此,需要先判断下对象是否是数字,比如加一个typeof

嗯,这样比较完美了。

方式二、使用Math.round、Math.ceil、Math.floor判断

整数取整后还是等于自己。利用这个特性来判断是否是整数,Math.floor示例,如下

这个直接把字符串,true,[]屏蔽了,代码量比上一个函数还少。

方式三、通过parseInt判断

很不错,但也有一个缺点

竟然返回了false,没天理啊。原因是parseInt在解析整数之前强迫将第一个参数解析成字符串。这种方法将数字转换成整型不是一个好的选择。

方式四、通过位运算判断

这个函数很不错,效率还很高。但有个缺陷,上文提到过,位运算只能处理32位以内的数字,对于超过32位的无能为力,如

复制代码代码如下:

isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了

当然,多数时候我们不会用到那么大的数字。

方式五、ES6提供了Number.isInteger

目前,最新的Firefox和Chrome已经支持。

以上就是判断是否为整数类型的五种方式,这五种方式各有优缺点,大家可以进行仔细比较,选择最优的进行使用。



多时候对有前端工程师来讲,页面效果直接会转嫁个CSS或JS,对HTML的一些属性了解的并不充分,接下来介绍一些有意思的HTML属性。

1)Multiple

顾名思义就是在一个输入标签或选择标签中可以输入多个值

<input type="file" multiple>

2)Accept

在<input>包含接受属性,允许用户伤上传指定的文件类型。我们在设置的过程中,需要设置指定的文件格式。并用逗号分开即可。传递文件类型包含图片、音频、视频、文档,等自定义文件类型。

<input type="file" accept=".png, .jpg">

3)Contenteditable

这个属性比较有意思,允许用户在前端HTML页面进行对文本的编辑,只对DOM的可见部分进行编辑。

<div contenteditable="true">我可以随意编辑!</div>

4)Spellcheck

进行拼写检查的可编辑段落:

<p contenteditable="true" spellcheck="true">这是一个段落。</p>

5) Translate

Translate告诉浏览器是否应该翻译内容。例如,您可以使用它来防止Google Translate自动尝试翻译您的公司或品牌名称。

<footer><p translate="no">Mark</p></footer>

6) Poster

带有预览图(海报图片)的视频播放器:

注释:Internet Explorer 8 以及更早的版本不支持 <video> 标签。

<video controls poster="/images/mark.gif">
   <source src="movie.mp4" type="video/mp4">
   <source src="movie.ogg" type="video/ogg">
   Your browser does not support the video tag.
</video> 

7) Download

download 属性规定被下载的超链接目标。

在 <a> 标签中必须设置 href 属性。

该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。

avaScript 数据类型一共有 7 种:Undefined、Null、Boolean、String、Symbol、Number、Object。除了 Object 之外的 6 种属于原始数据类型。有时,我们还会细分 Object 的类型,比如 Array,Function,Date,RegExp 等。

判断方法

typeof

typeof 可以用来区分除了 Null 类型以外的原始数据类型,对象类型的可以从普通对象里面识别出函数:

问题一:typeof 不能识别 null,如何识别 null?

答案:如果想要判断是否为 null,可以直接使用===全等运算符来判断(或者使用下面的Object.prototype.toString 方法):

问题二:typeof 作用于未定义的变量,会报错吗?

答案:不会报错,返回"undefined"。

问题三:typeof Number(1)的返回值是什么?

答案:"number"。注意 Number 和 String 作为普通函数调用的时候,是把参数转化为相应的原始数据类型,也就是类似于做一个强制类型转换的操作,而不是默认当做构造函数调用。注意和 Array 区分,Array(...)等价于 new Array(...)

问题四:typeof new

Number(1)的返回值是什么?

答案:"object"。

instanceof

instanceof 不能用于判断原始数据类型的数据:

instanceof 可以用来判断对象的类型:

需要注意的是,instanceof 的结果并不一定是可靠的,因为在 ECMAScript7 规范中可以通过自定义 Symbol.hasInstance 方法来覆盖默认行为。

Object.prototype.toString

由上面的示例可知,该方法没有办法区分数字类型和数字对象类型,同理还有字符串类型和字符串对象类型、布尔类型和布尔对象类型,另外,ECMAScript7 规范定义了符号 Symbol.toStringTag,你可以通过这个符号自定义Object.prototype.toString 方法的行为:

因为 Object.prototype.toString 方法可以通过 Symbol.toStringTag 属性来覆盖默认行 为,所以使用这个方法来判断数据类型也不一定是可靠的。

Array.isArray

Array.isArray(value)可以用来判断 value 是否是数组: