1.关于数字和字符串知识拓展

1.1.区别

1.1.1.功能

  • 1和’1’ 前者是数字,后者是字符串
  • 数字能加减乘除,字符串不行
  • 数字不能表示电话号码,字符串可以

1.1.2.JS中存储形式

  • 数字是用64位浮点数的形式存储的
  • 字符串是用类似 UTF8 形式存储的 (UCS-2)

    1.2.如何存数字

    1.2.1.二进制

  • 10 转 2

image.png
所以31(十进制)=011111(二进制)

  • 2 转 10

image.png
从后往前,最后一位乘以 2以此类推

1.2.1.用十六进制表示二进制

image.png
计算器
image.pngimage.png

1.3.如何存储字符(先编号,然后存编号)

最初

image.png

1.3.1.中国人开始用电脑,怎么表示中文

还是编号,中国国家标准局来编,名称为 国标2312

1.3.2.GB2312(4位16进制数—16位二进制数)

image.png
没有收录生僻字,而我们又需要用,随后微软出手

1.3.3.微软推出国标扩展(简称GBK)

image.png
再继续,人们又需要一些藏文,泰文;而网页无法显示,继续编号,万国码出世

1.3.4.万国码 (Unicode

优点:

  • 已收录14万多字符,全世界通用

缺点:

  • 两个字节不够用,每个字符要用三个及以上的字节
  • 所有文件扩大50% ,不划算

    1.3.5.UTF-8出世

    UTF-8 是 Unicode 一种存储规则,也叫字符编码规则
    鸡贼的存法,省空间
    image.png

    UTF-8的规则

    image.png

    2.JS 中的数据类型

    7种:四基两空一对象*

    对象属于复杂类型,其他是简单类型 JS 数据类型 - 图11

    2.1.数字 number

    2.1.1.写法

    image.png

    2.1.2.特殊值

  • 正 0 和负 0

都等于 0 ,但不一样。如: 1/+0 =+∞;1/-0 =-∞

  • 无穷大

Infinity、+Infinity、-Infinity

  • 无法表示的数字

NaN(Not a Number)—也是个数字,只是现在无法表示。而且NaN不等于NaN,因为并不知道 NaN 表示的是不是一个值

2.1.3.64位浮点数

image.png

2.1.4.范围和精度

image.png

2.2.字符串 string(每个字符两个字节)

2.2.1.写法

image.png
如果要在单引号里面加单引号,改变外面的引号或者用转义
image.png

2.2.2.转义*

image.png
多行字符串除了加\n换行
还可用反引号
image.png

2.2.3.字符串的长度(string.length)

  1. '123'.length //3
  2. '\n\r\t'.length //3
  3. ''.length //0
  4. ' '.length //1(中间有几个空格就是几)
  5. '\\\\\\'.length //3

2.2.4.通过下标读取字符

image.png

2.2.5.base64 转码

image.png

  1. window.btoa('123') //MTIz
  2. window.atob('MTIz') //123

2.3.布尔 boolean(真或假)

只有两个值(true/false)

2.3.1.下面运算符会得到 bool 值

  • 否定运算

    1. !value
  • 相等运算

    1. 1 == 2
    2. 1 != 2
    3. 1 === 2
    4. 1 !== 2
  • 比较运算

    1. 1 > 2 / 1 >= 2 / 3 < 4 / 3 <= 4

    2.3.2.if 配 bool

    image.png

    2.3.3.五个 falsy 值*

    falsy 就是相当于 false 但又不是 false 的值
    分别是 undefined 、 null 、 0 、 NaN 、 ‘’
    两个空,两个数字,一个字符串为空

    2.3.4.undefined 和 null 两种空类型

    只有 JS 有两种空类型,原创之处
    image.png

    2.4.符号 symbol(不常用的数据类型)

    参考文章
    Symbol 生成一个全局唯一的值。
    可以用以下代码验证

    1. var a1 = Symbol('a')
    2. var a2 = Symbol('a')
    3. a1 !== a2 // true

    3.变量声明

  • 现在写代码只用 let(用作给变量声明) 和 const(用做给常量声明) 两种声明 ,不用var

image.png

  • 变量声明指定值的同时也指定了类型

image.png

3.1.let 声明

image.png
for+var

  1. for(var i=0;i<5;i++){
  2. setTimeout(()=>console.log(i),0)
  3. }
  4. //打出五次5

for+let

  1. for(let i=0;i<5;i++){
  2. setTimeout(()=>console.log(i),0)
  3. }
  4. //分别打出 0 1 2 3 4

3.2.const 声明

规则跟let 几乎一样
只有一条不一样:声明是就要赋值,并且赋值后不能更改

3.3.变量和常量区别一下 name 和 ‘name’

image.png

4.类型的转换

4.1.number => string

  • String(n)
  • [x] n + ‘’ //反着加也行

    4.2.string => number

  • [x] Number(s)

  • parseInt(s) 转整数(现在默认十进制自动加10,不用在s后面加 ,10 ;以前的0开头的,JS 默认八进制)
  • parseFloat(s)
  • s - 0
  • +s

有一个bug:当有22位数字时会自动变成科学计数
image.png

4.3.x => bool

  • Boolean(x)
  • [x] !!x

    4.4.x => string

  • [x] String(x)

  • x.toString()

有一个 bug:1.toString() —JS 会认为. 后面还应该有数字没有写完
所以只能写成 (1).toString 或者 1..toString()
image.png


资料来源:
饥人谷
网道教程