浅谈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 相关文章推荐
DWR Ext 加载数据
Mar 22 Javascript
javascript 简单抽屉效果的实现代码
Mar 09 Javascript
jQuery截取指定长度字符串的实现原理及代码
Jul 01 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
使用Javascript写的2048小游戏
Nov 25 Javascript
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
Bootstrap实现导航栏的2种方式
Nov 28 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
Oct 10 Javascript
微信小程序使用swiper组件实现层叠轮播图
Nov 04 Javascript
vue transition 在子组件中失效的解决
Nov 12 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python中运算符"=="和"is"的详解
2016/10/08 Python
Python常用库推荐
2016/12/04 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
Python构建图像分类识别器的方法
2019/01/12 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
python爬取豆瓣电影TOP250数据
2021/05/23 Python