JavaScript有哪些数据类型和常用方法?

一.背景介绍

       JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

二.知识剖析

2.1 JS有哪些数据类型?

      JavaScript语言的每一个值,都属于某一种数据类型。JavaScript的数据类型,共有六种。分别是undefined、null、boolean、number、string、object(ES6新增第七种Symbol一种数据类型,它的实例是唯一且不可改变的。类型的值)

      1)Undefined:Undefined类型只有一个值,即特殊值undefined。在使用var声明变量,但未对其加以初始化时,这个变量值就是undefined。

       2)Null:Null类型是第二个只有一个值的数据类型。其特殊值就是Null。从逻辑角度上看,null是一个空的对象指针。而这也正是使用typeof操作符检测null值,会返回“object”的原因。

       3)Boolean:即布尔类型,该类型有两个值:true

false。需要注意的是,Boolean类型的字面值true和false是区分大小写的。也就是说,True和False(以及其它的混合大小形式)都不是Boolean值,只是标识符。

        4)Number:该类型的表示方法有两种形式,第一种是整数,第二种为浮点数。整数:可以通过十进制,八进制,十六进制的字面值来表示。浮点数:就是该数值中必须包含一个小数点,且小数点后必须有一位数字。

        5)String:String类型用于表示由零或多个16位的Unicode字符组成的字符序列,即字符串。至于用单引号,还是双引号,在js中还是没有差别的。记得成对出现。

        6)Object:Object数据类型,称为对象,是一组数据和功能(函数)的集合。可以用new操作符后跟要创建的对象类型的名称来创建。也可以用字面量表示法创建。在其中添加不同名(包含空字符串在内的任意字符串)的属性。

2.2 JS数据类型的常用方法

这里介绍6种:Boolean()、toString()、String()、isNaN()、Number()、parseInt()。

实例:demo1

注:看demo的时候,打开控制台看console.log()的结果。

三.常见问题

怎么样判断各种数据类型?

四.解决方案

这里介绍2种方法:typeof、Object.prototype.toString

1)typeof:用来判断各种数据类型,有两种写法:typeofxxx,typeof(xxx)。

实例:demo2

       总结:如果右边的是基本类型,则typeof会尝试得到最基本的类型,比如number,string等等,如果是函数名,那么则返回function,这里Object,Number,String,等等都可以看成函数名,如果右边是一个基本的对象,则返回object(返回的都是小写哦)。

 注:我们发现typeof null,结果返回了object,这是一个很早之前的BUG,一直沿用至今。

试用范围:如果通过typeof来判断类型,适用于判定基本类型,或者判断是否为函数(function)。

2)Object.prototype.toString。

实例:demo3

       需要注意的是,必须通过Object.prototype.toString.call来获取,而不能直接new Date().toString(),从原型链的角度讲,所有对象的原型链最终都指向了Object,按照JS变量查找规则,其他对象应该也可以直接访问到Object的toString方法,而事实上,大部分的对象都实现了自身的toString方法,这样就可能会导致Object的toString被终止查找,因此要用call来强制执行Object的toString方法。

 

五.拓展思考

JavaScript类型转换有哪些?以及如何转换?

更多请参考:http://www.runoob.com/js/js-type-conversion.html

六.参考文献

w3school

脚本之家

七.更多讨论

Q1:如何判断是否是null值
使用typeof会返回object
instanceof会报错
constructor会报错
Object.prototype.toString.call返回[object Null]

Q2:typeof的局限性
if(typeof a!=”undefined”){alert(“ok”)},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性

Q3:判断NaN:
var tmp = 0/0; 
if(isNaN(tmp)){ 
alert(“NaN”); 
}

你可能感兴趣的:(js)