来自 服务器&运维 2019-12-09 07:07 的文章
当前位置: 澳门威尼斯人平台 > 服务器&运维 > 正文

JavaScript剖断变量是还是不是为数组的方法_javascript技术_脚本之家

今天小编给大家整理些关于javascript判断变量是否是数组的相关知识,主要通过以下四点给大家展开话题,具体内容如下所示:

typeof都返回object

文中为大家分享了三种JavaScript判断对象是否为数组的方法,

今天针对不同的数组判定方式在chrome上做了一个效率的对比,结果如下:

1. typeof真的那么厉害吗??

在JavaScript中所有数据类型严格意义上都是对象,但实际使用中我们还是有类型之分,如果要判断一个变量是数组还是对象使用typeof搞不定,因为它全都返回object复制代码 代码如下:var o = { 'name':'lee' };var a = ['reg','blue'];document.write( ' o typeof is ' + typeof o);document.write;document.write( ' a typeof is ' + typeof a);执行:复制代码 代码如下:o typeof is objecta typeof is object 因此,我们只能放弃这种方法,要判断是数组or对象有两种方法

1. typeof

var ret; var o = [1,2,3]; var toStr = {}.toString; var array = {}; array["[object Array]"] = "array"; console.log console.log"); console.time; for { ret = Array.isArray; } console.timeEnd; console.log; console.log("方法二:o instanceof Array"); console.time; for { ret = o instanceof Array; } console.timeEnd; console.log; console.log("方法三:o.constructor == Array"); console.time; for { ret = o.constructor == Array; } console.timeEnd; console.log; console.log("方法四:array[toStr.call; console.time; for { ret = array[toStr.call] == "array"; } console.timeEnd; console.log;
//首先看代码var ary = [1,23,4];console.log; //输出结果是Object

第一,使用typeof加length属性

首先我们会想到的是使用typeof来检测数据类型,但是对于Function, String, Number, Undefined等这几种基本类型来说,使用typeof来检测都可以检测到,比如代码如下:

澳门威尼斯人平台,上面的办法并不能实时的检测出是否是数组,只能判断其类型,所以说typeof判断基本类型数据还是挺好的,但是不能准确测试出是否是数组(typeof的具体用法以后提及,现在回归正题)

数组有length属性,object没有,而typeof数组与对象都返回object,所以我们可以这么判断复制代码 代码如下:var o = { 'name':'lee' };var a = ['reg','blue'];var getDataType = function{ if{ if( typeof o.length == 'number' ){ return 'Array'; }else{ return 'Object'; } }else{ return 'param is no object type'; }};alert; // Objectalert; // Arrayalert; // param is no object typealert; // param is no object typealert; // param is no object type

function test(){}console.log; // numberconsole.log; // function console.log; // stringconsole.log; // undefined

2.instanceof 判断

第二,使用instanceof

但是对于数组或者正则来说,使用typeof来检测的话,那就满足不了,因为当我们检测数组或者正则的话,那么返回的类型将会是一个对象object,如下代码所示:

本文由澳门威尼斯人平台发布于服务器&运维,转载请注明出处:JavaScript剖断变量是还是不是为数组的方法_javascript技术_脚本之家

关键词: