【JS数据类型】JS中的判断数据类型函数

一、JS中的基本数据类型
string、boolean、null、undefined、number,symbol(ES6)
基本数据类型通常指的是直接利用字面量的方式进行赋值的情况,其中要注意的是,对于已经初始化的基本数据类型(即var a = 1234),是可以直接调用其对应对象的方法的,再调用方法的时其本质是浏览器实现了对基本数据类型的装箱和拆箱操作,再调用方法时将其转换为对引得对象,调用完毕之后还原为基本数据类型。
但是对于没有进行初始化的变量是不能直接调用对象方法的,因为程序无法判断其数据类型:
2.toString()该方法会报错,但是2..toString()不会,因为2.表示其实number类型,所以可以成功的进行装箱拆箱操作进而可以调用相关的方法。
二、判断数据类型的函数
1、 利用typeof运算符时其中只有null是异常的,typeof(null)=object,所以在判断变量类型是否为null时要注意。同时利用typeof时对于没有声明的变量是不会报错的,返回值为undefined。全局变量和函数变量在没有声明时使用是会报错的,但是在对象中使用没有定义的属性是不会报错同样返回的是undefined。Function变量是具有length属性的,其长度为传入的参数的个数。
2、 利用JS中的对象如Object,String等利用new方式生成的变量,用typeof判断其类型时均为object但是,typeof Object、typeof Function、typeof String均为function,因为这些对象均是构造函数。对于未定义或者是未声明的变量利用typeof操作符结果均是undefined,对于没有声明的变量,只有typeof一种运算,虽然在非严格模式下delete未声明的变量不会报错但不推荐使用。

var a =new String("133");
typeof(a)  //object

3、 变量是弱类型的,即其本身是没有类型的,其值才是具有类型的。
综上所诉利用typeof进行类型判断并非万全之策
利用Object.prototype.toString.call()的方式进行变量类型判断比较合适:

Object.prototype.toString.call(new RegExp())
"[object RegExp]"
Object.prototype.toString.call(new String())
"[object String]"
Object.prototype.toString.call("123")
"[object String]"

不论是基本数据类型还是Object的数据类型的变量通过第二个参数均可以判断出数据的类型来。是不是很好的方法!!!!!

你可能感兴趣的:(JavaScript)