浅谈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插件 autoComboBox 下拉框
Dec 22 Javascript
js函数的延迟加载实现代码
Oct 11 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
Apr 12 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Dec 10 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
JavaScript实现跟随滚动缓冲运动广告框
Jul 15 Javascript
微信小程序云开发实现增删改查功能
May 17 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 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学习 函数 课件
2008/06/15 PHP
php自定义分页类完整实例
2015/12/25 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
JS交换变量的方法
2015/01/21 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python实现数独算法实例
2015/06/09 Python
python开发之thread线程基础实例入门
2015/11/11 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
11月红领巾广播稿
2014/01/17 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python