【JavaScript】数据类型

243 阅读3分钟

一、数据类型

字符编码

  • GB2312:2个字节,16位
  • GBK:2个字节,16位
  • Unicode:3个及以上的字节
  • UTF-8:英文1个字节存储,中文3个字节存储,变长存储法,“8”表示最低存储位数是8位

数字 number

写法

  • 整数写法:1
  • 小数写法:0.1
  • 科学计数法:1.23e4=1.23*10^4
  • 八进制写法:0123或00123或0o123
  • 十六进制写法:0x3F或0X3F
  • 二进制写法:0b11或0B11

特殊值

  • +0=-0=0
  • 1/0=1/+0=Infinity,1/-0=-Infinity
  • NaN(Not a Number):无法表示的一个数字,比如0/0=NaN

字符串 string

写法

  • 单引号:'中国'
  • 双引号:"中国"
  • 反引号:`中国`,TAB键上面,多行字符串使用反引号

引号的转义

当单引号中有单引号时,比如'it's me',使用转义

  • 'it's me' 在'前加上一个反斜杠 或者使用以下两种写法
  • ''it's me''
  • `it's me`

其他转义

  • ' is '
  • '' is ''
  • \n is 换行
  • \r is 回车
  • \t is tab制表符
  • \\ is \
  • \uFFFF is 对应的Unicode字符
  • \xFF is 前256个Unicode字符

字符串的属性

字符串的长度

获取一个字符串的长度的方法:字符串.length
'\\\\\\'.length 的值是3,因为\\表示一个反斜杠
' '.length 的值是1,1个空格是1个字符

通过下标读取字符

s = 'china'
s[0] = 'c'

base64转码

window.atob('base64字符串')
base64编码的字符串转为正常字符串

布尔 boolean

取值

true/false,都是小写

哪些数据是真值,哪些是假值?

除了以下五个falsy值和false,其他值都是真值

  • undefined
  • null
  • 0
  • NaN
  • '' 空字符串

undefined和null的区别

  • 如果一个变量被声明但是没有赋值,它的默认值为undefined,不是null
  • 如果一个函数没有return,那么它的默认值为undefined,不是null
  • 习惯上,将非对象的空值写为undefined,对象的空值写为null

对象 object

二、变量声明

三种变量声明的形式

  • var a = 1 (ES3)
  • let a = 1 (ES6)
  • const a = 1 (ES6)

区别

  • var是过时写法,不好用
  • let是新的更合理的写法
  • const声明时必须赋值,且不能再修改
  • a = 1 不是变量声明写法,是赋值

let声明

规则

  • 只在一个代码块内有效,不超过{}
  • 同一个作用域中,不能对一个变量进行二次声明
  • 可以只声明,不赋值
  • 变量需要被先声明再使用
  • 全局声明的let变量,不会成为window的属性
  • for循环配合let有奇效

const声明

规则

  • 规则几乎和let一样
  • 除了:声明时必须赋值,赋值后不能更改

name 和 'name' 的区别

  • name 是变量,值可变
  • 'name' 是常量,值不可变

三、类型转换

number =》 string 数字转字符串

  • 使用函数String,即String.(123),得'123'
  • 把数字加上一个空字符串,即123 + '',得'123'

string =》 number 字符串转数字

  • 使用函数Number,即Number('123'),得123
  • 把字符串减去一个0,即'123'-0,得123
  • 字符串前面加上一个+

x =》 booblean 任何东西转布尔

  • !!x,取非x的非,即取x的原始布尔值
  • Boolean(x)

x =》 string 任何东西转字符串

  • String(x)
  • x.toString()