JavaScript数据类型(一)

JavaScript数据类型

  在C语言中,声明一个整数变量是int a;在这句话中,int就是a的数据类型。但是在JavaScript中,不管任何变量都是用var(ES6会有let和const)声明的,所以可能有人认为JavaScript没有数据类型。事实上,JavaScript的变量确实没有数据类型,但是它的值却是有数据类型的,因此变量的数据类型由它里面存放的值来决定的。

一、内置数据类型

  JavaScript中有七种内置的数据类型stringnumberbooleannull(已声明,但是值为null)、undefined(已声明未赋值)、objectsymbol(ES6新增的)。这7种数据类型分为两类,除了object类型以外其他的统称为基本数据类型,或者值类型,object是引用数据类型。如果声明一个变量并给其赋值,其值如果是基本类型,那么一定是这些数据类型中的一种。如果是引用数据类型,那么可能是array、object、function(ES6的class也是function类型)等。

基本数据类型存储在栈中,这些数据占据空间大小固定,属于经常使用的数据。引用数据类型存储在堆中,这些数据占据空间大,大小不固定,如果存储在栈中将会影响程序性能。引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

二、检测数据类型的函数typeof

typeof函数的返回值是一个字符串,并且它只会返回以下字符串:

  • string
  • number
  • boolean
  • object
  • function
  • undefined
  • symbol (ES6之后才有,谷歌浏览器typeof Symbol("")返回得结果是symbol)

这里有2点需要注意的东西,一是typeof null的结果也是"object",这可能是一个BUG。(在JavaScript中null的二进制形式全是0,而Object的二进制前三位是0开头,所以null就被误当成object了)。二是引用类型使用typeof检测都是object,但是typeof function(){} 却是function。

所以typeof这个函数并不能完全检测我们想要检测的所有数据类型,它有缺陷:

  • 基本数据类型无法检测出null
  • 引用数据类型只能检测function
  • number类型无法确定是int还是float,这个可以忽略

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值