篇文章主要介绍了五种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 是否是数组:
*请认真填写需求信息,我们会在24小时内与您取得联系。