🟡JavaScript数据类型

本文最后更新于:2023年7月28日 凌晨

原始类型

Undefined

定义变量的默认值,表示未定义

Null

一个空对象指针,声明变量要保存对象但暂时未获取时应赋初值null

Boolean

Boolean()方法将其他类型转为Boolean型,'',0,NaN,null,undefined被转为false,其他均为true

String

### 🌿字符集

🌿字符数组

字符串可以当作一个只读字符数组

1
2
3
let str = 'Jonathan'
str[3] = 'a'
str.length = 8

字符不可更改,长度不可更改

1
2
3
let str = 'Jonathan'
str.length = 4, str[1] = 'a'
console.log(str) // 'Jonathan'

可以用str.split()将字符串分割出一个可读写的字符数组

1
2
3
4
let str = 'Jonathan'
let x = str.split('') // ['J', 'o', 'n', 'a', 't', 'h', 'a', 'n']
x.length = 4, x[1] = 'a'
let y = x.join('') // 'Jana'

🌿Base64

btoa()asc转Base64

atob() Base64转asc

Number

🥝数值表示

ES6中新增了二进制与八进制的表示🔗前往查看

1
2
3
const a = 31        // 十进制
const a = 037 // 八进制0开头,ES5严格模式禁止0开头表示八进制
const b = 0x1F // 十六进制0x(或0X)开头(不分大小写)

JS有-0+0一般情况是相等的

1
Infinity/-0 == Infinity/+0    // false, 只有这种情况会不同

🥝浮点数

JS会尽量接收一个整数,数字小数点后有非零值才会成为浮点数

1
2
3
const a = 1.0        // 无效
const b = 1.1 // 有效
const c = .1 // 有效

小数高于6位会默认使用科学计数法(最高精度e-17)

🥝NaN

NaN(Not A Number),唯一一个不等于自身的值,可以用isNaN()或是否等于自身来判断NaN

1
NaN != NaN          // true

🥝Infinity

表示无穷大,可以用isInfinity()判断是否为Infinity

🥝parseInt()

parseInt(v{待转值}, {以[2, 36]进制转换})

🥝parseFloat()

🥝Number()

Symbol

ES6新增类型🔗前往查看

Object

基本引用类型

Date

Data的原型为字符串

🍍建立日期对象

日期对象可直接比较时间早晚(时间戳越大越晚)

1
const now = new Date()                 // 默认当时计算机日期

Date.parse()Date.UTC()来初始化日期

1
2
3
4
5
6
7
const now = new Date(Date.parse(/*...*/))
const now = new Date(Date.UTC(/*...*/))

// 默认隐式调用Date.parse或Date.UTC
// 等价于
const now = new Date(/*...*/)
const now = new Date(/*...*/)

Date.parse()

Date.parse()接收一个日期字符串,模板如下(月名, 星期名均为英文缩写)

  • 'day/momth/year'
  • '月名 day, year'
  • '星期名 月名 dd yyyy hh:mm:ss 时区'
  • 'YYYY-MM-DDTHH:mm:ss.sssZ'
1
const now = new Date('Thu Feb 03 2022 13:08:38 GMT+0800')

Date.UTC()

Date.UTC(year, month[, d, h, min, s, ms])年月必选,月为[0, 11],天默认为1其余默认为0

该时间为GMT时间(0时区时间)

1
const now = new Date(2022, 1, 3, 13, 24, 17)

Date.now()

Date.now()方法返回当时计算机日期与1970/1/1 00:00:00的时间差的毫秒数

1
2
console.log(Date.now())
// 1643867269483

🍍继承方法

Date.valueOf()

返回时间戳

1
2
console.log(new Date().valueOf())
// 1643867269483

Date.toString()

24小时制的时间(具体格式与环境有关)

1
2
console.log(new Date().toString())
// Thu Feb 03 2022 18:47:09 GMT+0800 (中国标准时间)

Date.toLocaleString()

12小时制时间(具体格式与环境有关)

1
2
console.log(new Date().toLocaleString())
// 2022/2/3 下午6:47:09

RegExp

原始值包装类型

单例内置对象Global

🥬URI编码方法

🥬eval方法

🥬对象属性

属性
undefined
NaN
Infinity
Object
Array
Function
Boolean
String
Number

单例内置对象Math

🍉属性

1
2
Math.PI
Math.E

🍉方法

最值方法

Math.min()Math.max()方法可以返回多个数中的最值

可用...(扩展操作符)找出数组最值

1
2
3
const nums = [0, 2, 3, -4, 2, 5]
console.log(Math.max(...nums)) // 5
console.log(Math.min(...nums)) // -4

舍入方法

  • Math.ceil()向上舍入
  • Math.floor()向下舍入
  • Math.round()四舍五入
  • Math.fround()最接近的单精度浮点数

运算方法

  • Math.random()返回[0,1)的随机数
  • Math.sqrt(x)求根
  • Math.pow(x, p)求幂
  • Math.abs(x)求绝对值

集合引用类型

Object

🍇创建对象

1
2
const obj = new Object()   // 构造函数式
const obj = {} // 对象字面量

🍇对象属性

对象属性key使用数字会转换为字符串

key使用中括号语法避免错误语法

1
2
3
4
5
6
7
8
9
const obj = {
0: 'a',
['a b']: 'b'
}

console.log(obj.0, obj.'0')
// 报错
console.log(obj[0], obj['0'])
// 'a' 'a'

Array

🥕创建数组

1
2
const nums = new Array(3)
const nums = [0, 1, 2]

🥕方法

继承方法

  • array.valueOf()等同数组字面量
  • array.toString()数组值toString()后以,相连的字符串
  • array.toLocaleString()数组值toLocaleString()后以,相连的字符串

复制与填充

ES6提供了fill()copyWithin()方法🔗前往查看

判断数组

Array.isArray()方法判断数据是否为数组

栈方法

  • array.push(x[, ...y])数组末尾添加元素,返回新length
  • array.pop()数组length减一,返回删除值

队列方法

(所有元素索引改变)性能逊于栈方法

  • array.unshift(x[, ...y])数组首部添加元素,返回新length
  • array.shift()数组length减一,返回删除值

排序方法

  • array.sort((a, b) => {})冒泡排序,接收一个回调确定排序规则
  • array.reverse()元素顺序颠倒

搜索方法

  • array.indexOf(x)返回第一个匹配的索引(无返回-1)
  • array.lastIndexOf(x)返回最后一个匹配的索引(无返回-1)
  • array.includes(x[, n])是否至少含有一个(无则返回false)

操作方法

ES6新类型

ES6新增了四种引用类型(Map,WeakMap,Set,WeakSet)🔗前往查看


🟡JavaScript数据类型
https://qingshaner.com/JavaScript原始类型/
作者
清山
发布于
2022年1月29日
许可协议