浅谈js数据类型判断与数组判断


Posted in Javascript onAugust 29, 2016

写在开篇:

昨天面试发现一个十分非常简单的问题竟然没有回答上来,可能也确实是因为太紧张了,感觉被自己蠢哭了。后来想想还是应该认真记录一下,这样才能印象深刻。革命尚未成功,壮实仍需努力!

1. js六大数据类型

number:数字,整数、浮点数等等,

string:单引号或者双引号来说明,

Boolean:返回true和false,这两个值不一定对应1和0

object:对象,可以执行new操作符后跟要创建的对象类型的名称来创建。

null:只有一个值得数据类型,逻辑上讲,null值表示一个空对象指针。

undefined:未定义,使用var声明变量但未对其初始化时,变量的值就是undefined。

2. 数据类型判断之typeof

typeof可以解决大部分数据类型的判断,其返回值为一个字符串,该字符串说明运算数的类型。

//判断变量num是不是一个数字类型
if(typeof num=='number') {
  return true;
}

返回结果:

var a="hling"; console.log(a); //string
var a=1; console.log(a); //number
var a=false; console.log(a); //boolean
var a; console.log(typeof a); //undfined

var a = null; console.log(typeof a); //object
var a = document; console.log(typeof a); //object
var a = []; console.log(a); //object

var a = function(){}; console.log(typeof a) 
//function除了可以判断数据类型还可以判断function类型

除了string、number、boolean、undefined这四个类型外,null、object、array返回的都是object类型!!!

对于函数类型返回的则是function,再比如typeof(Date),typeof(eval)等。

3. js判断数组类型的方法

1) instanceof

instanceof 用于判断一个变量是否某个对象的实例,是一个三目运算式。这个操作符和JavaScript中面向对象有点关系,了解这个就先得了解JavaScript中的面向对象。因为这个操作符是检测对象的原型链是否指向构造函数的prototype对象的。

a instanceof b?alert("true"):alert("false") 
//注意b值是你想要判断的那种数据类型,是不是一个字符串,比如Array

例子:

var arr = [1,2,3,1]; 
alert(arr instanceof Array); // true

2) constructor

在W3C定义中的定义:constructor 属性返回对创建此对象的数组函数的引用

var arr = []; 
arr instanceof Array; // true 
arr.constructor == Array; //true

判断各种类型的方法是:

console.log("string".constructor == String);
console.log((123).constructor == Number);
console.log(false.constructor == Boolean);
console.log([].constructor == Array);
console.log({}.constructor == Object);

通用的方法:

function isArray(object){
  return object && typeof object==='object' &&
      Array == object.constructor;
}

3) 特性判断

object.isArray() 来判断,目的就是准确地检测一个值是否为数组。IE9+、 Firefox 4+、Safari 5+、Opera 10.5+和Chrome都实现了这个方法。但是在IE8之前的版本是不支持的。

function isArray(object){
  return object && typeof object==='object' &&  
      typeof object.length==='number' && 
      typeof object.splice==='function' &&  
       //判断length属性是否是可枚举的 对于数组 将得到false 
      !(object.propertyIsEnumerable('length'));
}

4) Object.prototype.toString.call

Object.prototype.toString.call(value) == '[object Array]'

以上这篇浅谈js数据类型判断与数组判断就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
ExtJS 2.0实用简明教程 之ExtJS版的Hello
Apr 29 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
Aug 12 Javascript
js动态生成Html元素实现Post操作(createElement)
Sep 14 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
Aug 02 Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
layui在form表单页面通过Validform加入简单验证的方法
Sep 06 Javascript
Javascript中async与await的捕捉错误详解
Mar 03 Javascript
判断js的Array和Object的实现方法
Aug 29 #Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
Aug 29 #Javascript
jquery根据一个值来选中select下的option实例代码
Aug 29 #Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 #Javascript
javascript如何创建对象
Aug 29 #Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 #Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 #Javascript
You might like
php记录代码执行时间(实现代码)
2013/07/05 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
JQuery筛选器全系列介绍
2013/08/27 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
Django中URL的参数传递的实现
2019/08/04 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
Python-for循环的内部机制
2020/06/12 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书