《JS数据类型》

153 阅读3分钟

JS数据类型分类

  • 七种(四基两空一对象)
    数字number
    字符串string
    布尔 boolean
    符号 symbol
    空 undefined
    空 null
    对象 object

注意

函数 日期 数组 都属于object

  • Boolean
    Boolean 只有两个值 true和false 注意大小写
    下列运算符会得到布尔值
    否定运算:!加一个值 取他的反值
    相等运算 1==2 1!=2
    比较运算 1>2
  • number
    整数写法:1 小数写法:0.1 科学计数法:1.23e4(1.23乘以10的4次方)
    八进制写法:0123或00123或0o123
    十六进制写法:0x3F或者0X3F
    二进制写法:0b11 或者0B11
    特殊值:
    正0和负0 都等于0,要严谨
    无穷大:
    infinity +infinity -infinity
    无法表示的数字
    NAN(not a number) 表示一个不能表示的数字
    NAN!=NAN
  • 字符串
    字符串string 每个字符两个字节(阉割版的UTF-8)
    写法:
    单引号 ‘你好’
    双引号:“你好”
    反引号:你好
    注意:
    引号不属于字符串的一部分,就像书名号不属于书名的一部分一样

注意

  1. 引号嵌套
    错误写法:
    ‘it‘s’ok js会认为it结束了 后面的看不懂
    正确写法:
    ‘it\‘s ok’ 这就是转义 加斜杠
    或者双引号里嵌套单引号 或者反引号里嵌套单引号
  2. 转义
    就是用另一种写法表示你想要表示的东西
    ' 表示'
    ''表示''
    \n表示换行
    \r表示回车
    \t表示制表符
    \表示
    \uFFF表示对应的Unicode字符
    \xFF表示前256个Unicode字符
  3. 多行字符串
    多行字符串
    如果你想要在字符串里回车 只能用反引号 单引号和双引号里不能回车
    字符串的长度:
    string.length 空就是空 空格就是空格 两者不同
  • 布尔与五个falsy值
    if配bool
    if语句常常需要判断真假

五个falsy值
falsy就是相当于false但又不是false的值
分别是undefined null 0 和NAN ‘’空的字符串
空字符串和空格字符串不是一个东西 一定保持严谨

  • undefined和null
    区别:
    没有本质区别 但会有个别情况
    细节一:
    如果一个变量声明了但没赋值,那么默认值就是undefined 而不是null
    细节二:
    如果一个函数没有写return 那么默认return undefined 而不是null
    细节三:
    前端程序员习惯上,把非对象的空值写为undefined,把对象的空值写为null
    但这只是习惯而已

'1'和1

都是一为什么要区分 '1'和1?

  • 功能不同
    数字是数字,字符串是字符串,要严谨
    数字能加减乘除,字符串不行
    字符串能表示电话号码,但数字不行(数字表示电话号码会省略开头0)
  • 存储形式不同
    js中,数字使用64位浮点数的形式来储存
    js中,字符串是用类似utf-8形式存储的(usc-2)
  • var let 与const
    变量声明
    var a=1 let a=1 const a=1 a=1
    区别:
    var 是过时的 不好用的方式
    let是新的合理的方式
    const是声明必须赋值,且不能再改的方式
    最后这种是错误的声明方式
  • let 声明
    规则:
    遵循块作用域 即使用范围不能超过{}
    不能重复声明
    可以赋值,也可以不赋值
    必须先声明再使用,否则报错
    全局声明的let变量,不会变成window的属性
    for循环配合let有奇效
  • const声明
    规则:
    几乎跟let一样
    只有一条不一样:声明就要赋值 赋值后不能改
  • 变量声明
    指定值 同时也指定了类型 但是值和类型都可以随便变化
  • 类型转换
  1. number=> string(n)
    n+’’
  2. string=>number
    Number(s)
    parseint(s)/parseFloat(s)
    s-0
  3. x=>bool
    Boolean(x)
    !!x
  4. 任何东西转string
    x=>string
    tostring(x)
    但是1.tostring会报错 1..tostring不会 (1).tostring也不会