浅谈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 相关文章推荐
用javascript连接access数据库的方法
Nov 17 Javascript
JS网页图片按比例自适应缩放实现方法
Jan 15 Javascript
根据配置文件加载js依赖模块
Dec 29 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
Mar 18 Javascript
微信JS接口大全
Aug 25 Javascript
微信小程序页面间通信的5种方式
Mar 31 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
Feb 09 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
解决vue页面刷新或者后退参数丢失的问题
Mar 13 Javascript
vue安装和使用scss及sass与scss的区别详解
Oct 15 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 Javascript
vue proxy 的优势与使用场景实现
Jun 15 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/11/03 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
js获取客户端外网ip的简单实例
2013/11/21 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
Python的Urllib库的基本使用教程
2015/04/30 Python
python获取目录下所有文件的方法
2015/06/01 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python dlib人脸识别代码实例
2019/04/04 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
5.1手机促销活动
2014/01/17 职场文书
班主任寄语2015
2015/02/26 职场文书
采购部年度工作总结
2015/08/13 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript