JavaScript数据类型、变量声明、类型转换

176 阅读3分钟

JS中的数据类型

==7种(四基两空一对象)==

1 数字 number (64位浮点数)

1.1 特殊值

  • 正0和负0

都等于0,要严谨

  • 无穷大

Infinity、+Infinity、-Infinity

  • 无法表示的数字

NaN(Not a Number),但它是一个数字

1.2 64位存储一个number

  • 符号占1位
  • 指数占11位(-1023~1024)
  • 有效数字占52位 JS存储number示意图

1.3 范围和精度

  • 范围(忽略符号位)
  1. 指数拉满、有效数字拉满,得到最大二进制数字Number.MAX_VALUE: 1.7976931348623157e+308
  2. 指数负方向拉满、有效数字最小1,得到最小值Number.MIN_VALUE: 5e-324
  • 精度(有效数字)

最多只能到52+1个二进制位表示有效数字,2^53 对应的十进制是 9 后面 15 个零。所以15位有效数字都能精确表示,16位有效数字如果小于 90 开头,也能精确表示9110000000000001 就存不下来。

2 字符串 string

2.1 多行字符串

  • 如果你想要在字符串里回车
let s = `这样是
可以的
用反引号很容易做到`

2.2 通过下标读取字符

  • 注意 index 到 length
let s = 'hello';
s[4] // 'o'
s[5] // undefined,居然不报错

2.3 base64 转码

  • window.btoa

正常字符串转为 Base64 编码的字符串

  • window.atob

Base64 编码的字符串转为原来的字符串

3 布尔 bool

3.1 下列运算符会得到 bool 值

  • 否定运算

!value

  • 相等运算

1 == 2、1 != 2、3 === 4、3 !== 4

  • 比较运算

1 > 2、1 >= 2、3 < 4、3 <= 4

3.2 五个 falsy 值

  • falsy 就是相当于 false 但又不是 false 的值

分别是 undefined null 0 NaN ''

4. 符号 symbol

不怎么常用的数据类型

  • Symbol 生成一个全局唯一的值

参考JS 中的 Symbol 是什么?

5. 空 null

6. 空 undefined

6.1 undefined null的区别

没有本质区别

  • 如果一个变量声明了,但没有赋值,那么默认值就是 undefined,而不是 null
  • 如果一个函数,没有写 return,那么默认 return undefined,而不是 null
  • 前端程序员习惯上,把非对象的空值写为 undefined,把对象的空值写为 null。==但仅仅是习惯上而已==

7. 对象 object

变量声明

1. 三种声明方式

var a = 1 
let a = 1 
const a = 1

1.1 区别

  • var 是过时的、不好用的方式
  • let 是新的,更合理的方式
  • const 是声明时必须赋值,且不能再改的方式

1.2 var变量提升

1.3 let声明

1.3.1 规则

  • 遵循块作用域,即使用范围不能超出 { }
  • 不能重复申明
  • 可以赋值,也可以不赋值
  • 必须先声明再使用,否则报错
  • 全局声明的 let 变量,不会变成 window 的属性
  • for 循环配合 let 有奇效

1.3.2 对let的理解

我用了两个月的时间才理解 let

1.4 const声明

1.4.1 规则

  • 跟 let 几乎一样
  • 只有一条不一样:声明时就要赋值,赋值后不能改

类型转换

  • number => string
String(n)
n + ''
  • string => number
Number(s)
parseInt(s) / parseFloat(s)
s - 0
  • x => bool
Boolean(x)
!!x
  • x => string
String(x)
x.toString()