浅谈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直接编辑当前cookie的脚本
Sep 14 Javascript
浅谈javascript六种数据类型以及特殊注意点
Dec 20 Javascript
JS中getYear()和getFullYear()区别分析
Jul 04 Javascript
jQuery实现的进度条效果
Jul 15 Javascript
JQuery实现级联下拉框效果实例讲解
Sep 17 Javascript
Javascript编程之继承实例汇总
Nov 28 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
浅析vue component 组件使用
Mar 06 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
Aug 28 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
微信小程序云开发之使用云函数
May 17 Javascript
openlayers实现地图弹窗
Sep 25 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
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python执行get提交的方法
2015/04/29 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
工程造价自荐信
2013/10/09 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
家长建议怎么写
2014/05/15 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书