浅谈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 相关文章推荐
jQuery的remove()方法使用详解
Aug 11 Javascript
纯javascript模仿微信打飞机小游戏
Aug 20 Javascript
Jquery uploadify上传插件使用详解
Jan 13 Javascript
js选择器全面解析
Jun 27 Javascript
jstl中判断list中是否包含某个值的简单方法
Oct 14 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
Jan 12 Javascript
React Router v4 入坑指南(小结)
Apr 08 Javascript
微信小程序实现消息框弹出动画
Apr 18 Javascript
ZK中使用JS读取客户端txt文件内容问题
Nov 07 Javascript
JavaScript Array.flat()函数用法解析
Sep 02 Javascript
Vue使用Ref跨层级获取组件的步骤
Jan 25 Vue.js
Vue详细的入门笔记
May 10 Vue.js
判断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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Python 互换字典的键值对实例
2019/02/12 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
C#怎么让一个窗口居中显示?
2015/10/20 面试题
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
八年级物理教学反思
2014/01/19 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
三潭印月的导游词
2015/02/12 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis