美文网首页饥人谷技术博客
JS 里的数据类型(上)

JS 里的数据类型(上)

作者: JaniceZD | 来源:发表于2019-01-20 19:30 被阅读15次

JavaScript 的数据类型,共有七种(ES6 新增的第七种 Symbol 类型的值,本文暂不介绍)。七种内置类型又分为两大类型:基本类型和复杂类型。(本文将介绍JS中的简单数据类型)
基本类型有6种: numberstringbooleansymbolnullundefined
复杂类型:object

  • 数值(number):整数和小数(比如13.14
  • 字符串(string):文本(比如Hello World)。
  • 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
  • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  • null:表示空值,即此处的值为空。
  • 对象(object):各种值组成的集合。
  • Symbol(ES6 中新引入的值):Symbol 生成一个全局唯一的值。

1. 数值(number)

(1)整数和浮点数

JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,11.0是相同的,是同一个数。

1 === 1.0      // true

由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。具体常见容易犯错的例子如下:

0.1 + 0.2 === 0.3
// false

0.3 / 0.1
// 2.9999999999999996

(0.3 - 0.2) === (0.2 - 0.1)
// false

(2)数值的表示法

JavaScript 的数值有多种表示方法,可以用字面形式直接表示,比如35(十进制)和0xFF(十六进制)。
数值也可以采用科学计数法表示,下面是几个科学计数法的例子。

123e3   // 123000
123e-3   // 0.123
-3.1E+12
.1e-23

(3)数值的进制

使用字面量(literal)直接表示一个数值时,JavaScript 对整数提供四种进制的表示方法:十进制、十六进制、八进制、二进制。

  • 十进制:没有前导0的数值。
  • 八进制:有前缀0o0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
  • 十六进制:有前缀0x0X的数值。
  • 二进制:有前缀0b0B的数值。

默认情况下,JavaScript 内部会自动将八进制、十六进制、二进制转为十进制。

0xff // 255
0o377 // 255
0b11 // 3

(4)特殊数值NaN

NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。
NaN 也属于 number 类型,并且NaN不等于自身。

typeof NaN // 'number'

NaN === NaN // false

2. 字符串(string)

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。(由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript 语言的字符串只使用单引号,不妨也遵守这个约定吧。)
在代码的编写中,要始终坚持使用一种风格,不要一会使用单引号,一会使用双引号。

(1)多行字符串输入

字符串默认只能写在一行内,分成多行将会报错。

'a
b
c'
// SyntaxError: Unexpected token ILLEGAL

推荐使用:连接运算符(+)可以连接多个单行字符串,将长字符串拆成多行书写,输出的时候也是单行。

var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';

longString
// "Long long long string"

(2)转义

反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
需要用反斜杠转义的特殊字符,主要有下面这些。

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

(3)length 属性

length属性返回字符串的长度,该属性也是无法改变的。

(4)字符集

JavaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。
四字节字符𝌆,浏览器会正确识别这是一个字符,但是 JavaScript 无法识别,会认为这是两个字符。

'𝌆'.length // 2

上面代码中,JavaScript 认为𝌆length属性为2,而不是1。(\0\n\t等长度均为1)

(5)Base64 转码

JavaScript 原生提供两个 Base64 相关的方法。

  • btoa():任意值转为 Base64 编码
  • atob():Base64 编码转为原来的值
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"

btoa('你好') // 报错

3. 布尔值(boolean)

布尔值只有两个值:truefalse
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。

下列运算符会返回布尔值:

  • 前置逻辑运算符: ! (Not)
  • 相等运算符:===!====!=
  • 比较运算符:>>=<<=

其中,如果需要将各种类型的数据转换成boolean类型,以下几种会转换为false,其余的都是true:

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""''(空字符串)

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

4. symbol

参考文章:方应杭:JS 中的 Symbol 是什么?

5. null 与 undefined

这两种数值类型都用来表示变量没有值。

nullundefined都可以表示“没有”,含义非常相似。将一个变量赋值为undefinednull,老实说,语法效果几乎没区别。

undefined == null
// true

a.(规范)如果一个变量没有被赋值,那么这个变量的值就是 undefined

// 变量声明了,但没有赋值
var i;
i  // undefined

b.(习俗)如果你想表示一个还没赋值的对象(object),就用 null

var obj = null
obj  // null

c. (习俗)如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用undefined表示。(直接var xxx)

相关文章

  • JS 里的数据类型(上)

    JavaScript 的数据类型,共有七种(ES6 新增的第七种 Symbol 类型的值,本文暂不介绍)。七种内置...

  • JS里的数据类型转换

    上一篇文章(JS里的数据类型)介绍了js中的数据类型。这篇主要介绍数据类型转换。 一、任意类型转字符串 转换成st...

  • JS 里的数据类型转换

    前言:上一篇博客讲到JS里的数据类型,相信大家已经了解到7种数据类型,那么这章将详细深入了解JS的不同数据类型之间...

  • JS 里的数据类型

    JS 里的数据类型 JS中有七种数据类型,分别是:number,string,boolean,undefined,...

  • JS 里的数据类型转换

    JS 里的数据类型转换 Js中的数据类型一共有7种,即number,string,boolean,underfin...

  • 入坑前端08:JS 里的数据存储和赋值

    上一章讲过JS里的数据类型转化,这一章来聊聊JS如何存数据以及如何转化数据。 ●基本数据类型是存储在栈内存中。 ●...

  • 《JS里的数据类型》

    JS里的数据类型分为 原始数据类型(primitive type) 和 合成数据类型(complex type)...

  • JavaScript数据类型

    JS 里的数据类型 七种数据类型 Number,String,Boolean,Null,Undefined,Sym...

  • JS的类型转换

    JS的数据类型: 首先, JS的数据类型分为基本数据类型和引用数据类型基本数据类型: string number ...

  • JS里的数据类型转换及小技巧

    前言:之前的博客JS里的数据类型介绍了JS中的各种数据类型,那么可不可以把其他的数据类型转换成特定的一种数据类型呢...

网友评论

    本文标题:JS 里的数据类型(上)

    本文链接:https://www.haomeiwen.com/subject/xhgxjqtx.html