2018-06-08 JS里的简单数据类型

前言:众所周知,JS中一共有7种数据类型,分别是number、string、boolean、null、undefined、symbol、object。其中前六种是简单数据类型,object对象属于复杂数据类型。本文大致介绍一下5中简单数据类型(symbol是ES6新增的,本文暂不介绍)

1、number 数值类型

  1. JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。这就是说,JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数)。注:JS中的小数还可以这么写,.1 表示0.1因此:0.1 + 0.2 === 0.3这句话是错误的。
  2. JS中的科学计数法(E大写小写都可以),如
123e3 // 123000
123e-3 // 0.123
  1. JS中很坑的一点是,有时候你定义的数值并不一定是存储的数值,根本原因是JS中的进制转换机制。
    比如0111会识别为73,因为它将其识别成了8进制进行存储,然后用十进制展示出来。
    其中:
    十进制:没有前导0的数值。
    八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
    十六进制:有前缀0x或0X的数值。
    二进制:有前缀0b或0B的数值。
  2. 非数值NaN:NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。需要注意的是NaN === NaN这句话是错误的。
    非数值NaN可以用isNaN()来检测数值是否为非数值

2、string 字符串类型

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
1. 多行文本输入(即字符串需要包含回车)
建议使用的方法:连接运算符(+)连接多个单行字符串,将长字符串拆成多行书写,输出的时候是单行。
2. 转义:反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。主要的有以下几种

\0 :null(\u0000)
\b :后退键(\u0008)
\f:换页符(\u000C)
\n:换行符(\u000A)
\r:回车键(\u000D)
\t:制表符(\u0009)
\v:垂直制表符(\u000B)
\':单引号(\u0027)
\":双引号(\u0022)
\\ :反斜杠(\u005C)

  1. 字符串和数组一样是有length属性的,但该属性是无法改变的。
  2. 字符集。需要注意的是:

    JavaScript 对 UTF-16 的支持是不完整的,由于历史原因,只支持两字节的字符,不支持四字节的字符。这是因为 JavaScript 第一版发布的时候,Unicode 的码点只编到U+FFFF,因此两字节足够表示了。后来,Unicode 纳入的字符越来越多,出现了四字节的编码。但是,JavaScript 的标准此时已经定型了,统一将字符长度限制在两字节,导致无法识别四字节的字符。上一节的那个四字节字符��,浏览器会正确识别这是一个字符,但是 JavaScript 无法识别,会认为这是两个字符。

  3. Base转码
    有时,文本里面包含一些不可打印的符号,比如 ASCII 码0到31的符号都无法打印出来,这时可以使用 Base64 编码,将它们转成可以打印的字符。另一个场景是,有时需要以文本格式传递二进制数据,那么也可以使用 Base64 编码。

    btoa():任意值转为 Base64 编码
    atob():Base64 编码转为原来的值

3、boolean 布尔类型

Boolean类型只有两个值,分别是truefalse
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。
其中,如果需要将各种类型的数据转换成boolean类型,以下几种会转换为false,其余的都是true:
**undefined、null、false
数值0、非数值NaN、空字符串”“或”**

4、null && undefined

这两种数值类型都用来表示变量没有值,但有以下区别以及一些需要注意的地方:
1. 如果变量没有值,如var a;则变量a为undefind
2. null 一般表示空对象,比如声明了一个对象但不想给值,可以设置其为
3. 非空对象(如变量)暂时不给值,可以设置其为var a = undefined; 但由于第1条,不给确定的值变量的值会默认为undefined,所以可以直接只声明即可,如var a ;

5、typeof 运算符

typeof运算符可以确定一个值到底是什么数据类型。

需要注意的是null的数据类型并不是object对象(原因见①),以及function的数据类型是object对象,function本身不是一种数据类型

①:1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值