浅谈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 字符编码规则
May 04 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
jQuery中的select操作详解
Nov 29 Javascript
简单实现Vue的observer和watcher
Dec 21 Javascript
微信小程序组件 marquee实例详解
Jun 23 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
了解javascript中的Dom操作
May 27 Javascript
详解vue中的父子传值双向绑定及数据更新问题
Jun 13 Javascript
layui实现三级联动效果
Jul 26 Javascript
js实现倒计时秒杀效果
Mar 25 Javascript
解决Nuxt使用axios跨域问题
Jul 06 Javascript
详解ES6实现类的私有变量的几种写法
Feb 10 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
建立动态的WML站点(二)
2006/10/09 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
python多线程http下载实现示例
2013/12/30 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
python随机取list中的元素方法
2018/04/08 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
策划主管的工作职责
2013/11/24 职场文书
超市重阳节活动方案
2014/02/10 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
R9700摩机记
2022/04/05 无线电