浅谈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 相关文章推荐
用js生产批量批处理执行命令
Jul 28 Javascript
Jqyery中同等与js中windows.onload的应用
May 10 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
Jan 04 Javascript
CSS或者JS实现鼠标悬停显示另一元素
Jan 22 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
jQuery原理系列-css选择器的简单实现
Jun 07 Javascript
Angular2 路由问题修复详解
Mar 01 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
JS事件绑定的常用方式实例总结
Mar 02 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
Jul 14 Javascript
vuex的使用和简易实现
Jan 07 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
main.php
2006/12/09 PHP
php 三维饼图的实现代码
2008/09/28 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
javascript中的事件代理初探
2014/03/08 Javascript
Node.js文件操作详解
2014/08/16 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
python dataframe NaN处理方式
2019/12/26 Python
Python如何使用字符打印照片
2020/01/03 Python
python机器学习库xgboost的使用
2020/01/20 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
九寨沟导游词
2015/02/02 职场文书