JavaScript中的数据类型

我们简要的梳理一下在JavaScript中有哪些数据类型,以及它们的基础用法。

js中一共有七种数据类型:

string
number
boolean
symbol
null
undefined
object

 

String

string表示字符串,属于基础数据类型,通常用‘ ’或“ ”来表示,例如:‘你好’或者“你好”。

允许使用‘’,表示为空字符串,length为0

允许使用‘ ’,表示为一个空格字符串,length为1

\ ,表示为转义符,如果要在字符串中表示单引号或者双引号则需要转义符来配合:" \' "或者“ \" ”。

有一些特殊的转义符是需要硬背的,如“\n”表示回车,“\t”表示tab。注意转义符不占长度,“\n”的length为1。

如果想表示字符串\,则需用转义符来转义转义符:‘\\’。

ES6语法中多行字符串的表示为:

`xxxx

xxx`

用反引号表示,注意第一行与第二行中间如果有空格是会被计算在字符串中的,并且也会有length。

 

Number

number表示数字,属于基础类型。

  • 整数和小数:1 1.1 .1
  • 科学记数法:1.23e2
  • 二进制:0b11 有前缀0b0B的数值
  • 八进制:011(后来 ES5 添加了 0o11 语法)有前缀0o0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值
  • 十六进制:0x11 有前缀0x0X的数值

 

boolean

boolean只有两个值,true(真)与false(假),属于基础类型。

boolean其实是一个人的名字——乔治·布尔。

相传乔治·布尔是英格兰数学家和哲学家、数理逻辑学先驱。

由于其在符号逻辑运算中的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,将其结果称为布尔值。

1864年,布尔冒着大雨步行两英里走到讲台,身着打湿的衣服为学生们授课。不久后,他就病倒了,得了重度感冒还发高烧。其妻错误地相信疾病需要用致病因子施救,因为布尔是淋雨水而感冒的,妻子于是用桶子装水淋到他身上。结果湿气进一步加剧了他的病情。1864年,12月8日,布尔死于肺部积水。

boolean 的取值
a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true

 

Symbol

symbol表示为符号,属于基础类型,ES6新增类型。

具体可参考这篇文章:

方应杭:「每日一题」JS 中的 Symbol 是什么?​zhuanlan.zhihu.com

 

Null与Undefined

null表示为空,属于基础类型。undefined表示未定义,也属于基础类型。

null与undefined意思很像,空,没有结论没有定义都没有值······

为什么会有两个没有值的基础类型呢?其实当初设计这门语言的作者也曾表示过这个地方设计的不是很好。

我们可以这样来理解它们之间细微的不同:

  • (规范)一个变量没有被赋值,那么这个变量的值就是undefined。
  • (习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)

 

Object

object表示对象,属于复杂类型,简单的可以理解为它可以将上面所有的基础类型统统装起来组合在一起,然后这个装它们的大盒子就叫object。

  • object 的 key 一律是字符串,不存在其他类型的 key
  • object[''] 是合法的
  • object['key'] 可以写作 object.key
  • 注意 object.key 与 object[key] 不同
  • delete object['key']
  • 'key' in object

 

关于JS中数据类型的2个常见疑问

1、typeof null = “object”?

为什么取null的typeof,输出类型会是object?

这里是有历史原因的,最初null是被设计在object里面的,后来将null单独拿出来作为了一种基础类型,但是在js升级的过程中为了兼容之前的语法,这里的typeof null=“object”被保留了下来。所以大家要留意,这是一个bug,不要被迷惑了。

2、typeof function= “function”?

取function的typeof,输出类型应该是object才对。这里同样也是一个bug,需要谨记。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值