JavaScript数据类型

来源:互联网 发布:mac 手机远程控制 编辑:程序博客网 时间:2024/05/18 01:52

一直以来总觉得js的数据类型挺简单的,没有系统的学习过。但直到昨天在控制台下打了个undefined == null ,电脑竟然返回了个true。于是自己在书上翻了翻这方面的知识点,发现坑还真是不少,有很多令人迷惑但却技术上正确的点,便总结一下。

JS一共6种数据类型。其中,基本数据类型5种——Undefined,Null,Boolean,Number,String。复杂数据类型一种——Object。(注意数据类型都要首字母大写)

Undefined

只有一个值,undefined。一个声明了但未初始化的变量就是undefined。但奇怪的点在于,一个你没有声明的变量,你给它typeof一下返回的也是undefined。如下:

var a;//var b;alert(typeof a);//undefinedalert(typeof b);//undefined

所以,一个好的编程习惯是,能初始化的变量一定要初始化!!

Null

只有一个值,null。表示一个空对象的指针,这点很重要。这也就是问什么会有下面这样的输出结果:

var a = null;alert(typeof a);//object

所以,一个好习惯是:如果你的变量打算保存对象用,把它初始化为null。
那么,为什么

undefined == null //true

原因是,undefined值派生自null。但尽管如此,它们的用途完全不同!!将一个变量的值初始化为undefined是一种不好的习惯!!

Boolean

包含两个值,true和false。注意区分大小写,不是True和False。这里的坑是:ture不一定是1,false也不一定是0
能够被转换为false的变量有如下值:
- 空字符串
- 0
- NaN
- null
- undefined
具体请看,《JavaScript高级程序设计》第26页最下面的表格

Number

这里的坑点在于NaN,这个数值有俩特点:

  • 任何设计NaN的操作都会返回NaN
  • NaN和任何值都不等,包括NaN。NaN ==NaN//false

还有一个坑点,在于isNaN()函数。也就是什么样的变量会被当作NaN。看下面的例子:

isNaN(NaN)//trueisNaN(10)//falseisNaN("10")//falseisNaN("blue")//trueisNaN(true)//false,可以被转换为1

发现了吧,一个变量不管它是啥类型,只要它可以被转换为数值,它就不是NaN.
还有一个是parseInt()的使用,它的参数设置,尤其是第二个声明进制类型,不写了,具体请看,《JavaScript高级程序设计》P31

String

JS中,字符串用单引号还是双引号都可以。且一旦创建不可改变。(和java是一样的)
将一个值转换为字符串要调用toString()方法,JS中,null和undefined没有这个方法的,其他都有
具体请看,《JavaScript高级程序设计》P34

Object

其实这里可介绍的很多,就不详细讲了。JS的一个重要的思想:Object类型是所有它的实例的基础。Object类型所具有的任何属性和方法页同样存在于更具体的对象中。一张图让你搞懂JavaScript的继承与原型链,可以帮你理解js的继承思想。
Object的每个实例都有下列的属性和方法:
- constructor
- hasOwnProperty()
- isPrototypeOf()
- propertyIsEnumerable()
- toLocalString()
- toString()
- valueOf()