JavaScript数据类型

一直以来总觉得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);//undefined
alert(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)//true
isNaN(10)//false
isNaN("10")//false
isNaN("blue")//true
isNaN(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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值