浅谈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 相关文章推荐
javascript 动态添加表格行
Jun 22 Javascript
javascript重复绑定事件造成的后果说明
Mar 02 Javascript
JavaScript初学者建议:不要去管浏览器兼容
Feb 04 Javascript
jquery解析xml字符串简单示例
Apr 11 Javascript
JavaScript实现找出数组中最长的连续数字序列
Sep 03 Javascript
$("").click与onclick的区别示例介绍
Sep 25 Javascript
简单实现异步编程promise模式
Jul 31 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 Javascript
ES6 fetch函数与后台交互实现
Nov 14 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
Jul 28 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
Sep 24 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python基于DES算法加密解密实例
2015/06/03 Python
python 统计代码行数简单实例
2017/05/04 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
村优秀党员事迹材料
2014/01/15 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
活动总结格式范文
2014/04/26 职场文书
导师推荐信范文
2014/05/09 职场文书
高中学生自我评价范文
2014/09/23 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
个人典型事迹材料
2014/12/30 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android