10. js 数据类型

155 阅读2分钟

10.1 数字与字符串

  1. 电话号码必须用字符串来存, 因为数字版电话号码前面的0会自动省略,造成数据损坏

  2. 数字会转化二进制存入计算机, 字符通过编码存入, 计算机通过后缀来区分, 例如.txt就是字符串, .exe就是二进制

  3. 二进制转16进制:四个一组来转

  4. 要记住的字符编码: 0: 48 ; A :65, a:97,

  5. 字符编码的发展历程:

    • 中文国标字符编码**(GB)**只有常见汉字太少了
    • 微软出手发布(GBK), 还是太少, 没有蒙古文, 没有其他少数民族的文字
    • UTF 万国码来到, 全世界通用, 缺点: 每个字符需要用三个及以上字节, 所有文件扩大50%
    • 程序员想偷懒: 固长存储转为变长存储, 就有了utf-8, 1110代表第一个字节有三个part, 10: 我是接着上面的.

10.2 数据类型

六个简单类,一个复杂类:

  • number string bool symbol undefined null
  • object //数组, 函数, 日期 也是object

数字类的变态情况:

  • 正零和负零有区别:

    1/+0            //infinite
    1/-0            //-infinite
    
  • NaN: 一个无法表示的数字.

    • 例如: 负数没出现之前:1-5 = NaN

    • 0/0           // NAN
      NaN == NaN    //false
      
  • 如何存储浮点数: 0.5 => 1×12\times \frac{1}{2} => 1×\times2^-1^ => 0 -1 0

    1.65×\times2^-1^ => 0 -1 65

    最大数字: Number.MAX_VALUE

字符串

  • \转义,

    写法含义
    \''
    \""
    \n换行
    \r回车
    \t制表符
    \\\
    \uFFFF对应的Unicode字符
    \xFF前256个Unicode字符
  • 万能反引号`` `: 里面随便写字符串不用转义, 多行字符串也可以

  • base64:只能用于隐藏简历邮箱, 没有其他作用

  • 所有的六个假值: false undefined null 0 NaN ''

undefined 和 null的区别

  • js原创之处

  • undefined: 是默认的空, null主动

  • undefined多了两种默认情况: 1. 变量声明没有赋值. 2. return后面没有变量, 或者加了回车

var 和let 和const

  • var过时 , a=1过时, 不准用var, 只能let const

  • 全局申明的let变量,不会挂载到window, var会

  • for循环配合let有奇效. 主要是setTimeout

  • const 声明必须赋值

###10.3 类型转换

  • number => string

    • String(n)

    • n+''

    • 陷阱:Number足够大, 会变成科学技术法:

  • string => number

    • Number(s)
    • s - 0
    • parseInt(s) , parseInt , 已经默认加10, 以前必须加的原因 0开头字符串转化, 默认8进制
  • x => bool

    • Boolean(x)
    • !!x
  • x => string

    • String(x)
    • x.toString()