浅谈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 相关文章推荐
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
Js操作树节点自动折叠展开的几种方法
May 05 Javascript
js实现简单随机抽奖的方法
Jan 27 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
Sep 04 Javascript
jQuery获取字符串中出现最多的数
Feb 22 Javascript
基于JS实现EOS隐藏错误提示层代码
Apr 25 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
JS排序之冒泡排序详解
Apr 08 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
May 10 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
JavaScript实现省份城市的三级联动
Feb 11 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
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
JS 建立对象的方法
2007/04/21 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
js中的this关键字详解
2013/09/25 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
PyQt5 对图片进行缩放的实例
2019/06/18 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
pytorch 常用线性函数详解
2020/01/15 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
秘书英文求职信
2014/04/16 职场文书
学校安全防火方案
2014/06/07 职场文书
党员个人剖析材料
2014/09/30 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
一年级小学生评语大全
2014/12/25 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
python process模块的使用简介
2021/05/14 Python
python库sklearn常用操作
2021/08/23 Python
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
浅谈Redis的事件驱动模型
2022/05/30 Redis
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS