• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
社会优先于个人
博客园    首页    新随笔    联系   管理    订阅  订阅
3.4 数据类型

简单数据类型

  • undefined,null, boolean, string, number, symbol

复杂数据类型

  • object:无序的键值对的集合

typeof 操作符

  • typeof null 返回的事object
  • typeof是操作符,不是函数
  • 返回值,可以是:undefined,object,function,symbol,string,number,boolean

undefined 类型

  • 只有一个值,就是undefined
  • 声明一个变量没有初始化,它的值就是undefined
  • 一般来说,不需要给某个值设置为undefined。undefined主要用于比较。
  • es3之前,没有undefined。增加它的目的,就是为了区分null(空指针)和未初始化变量
  • 是个假值,null也是个假值
  • 对未声明的变量,只能有一个操作就是typeof,结果也是undefined
  • 声明没有初始化的变量,typeof操作结果也是undefined

null类型

  • 只有一个值,就是null
  • 表示空对象指针
  • typeof(null)的返回值是object
  • 定义对象变量时,建议使用null来初始化
  • null==undefined true

boolean类型

  • 两个值:true false
  • 区分大小写的,True和False是有效的标识符,不是布尔值
    image

number类型

  • 表示整数和浮点数
  • 八进制,0开头
  • 十六进制,0x
  • 存储浮点值的存储空间是整数的两倍,es总是想办法把小数转换为整数,比如小数点后面是0
  • 使用IEEE754规范存储数据(无论什么语言),就会有精度问题,尤其是小数计算
  • 值有范围,超过了就是infinity 和-infinity
  • isFinite()函数,可以判断一个数是否是有限大

NaN

  • NaN,不是数值
  • 在其他语言中,0除任何数值,都会报错。
  • 在js中,0,+0,-0 互相除,会得到NaN
  • 在js中,0除任何一个非0,会得到infinity 或者-infinity
  • 任何涉及NaN的操作,都会返回NaN
  • NaN不等于任何值,包括NaN
  • isNaN函数,任何不能转换为数值的,都会返回true

数值转换

  • Number() 可以用于任何类型
  • parseInt()和parseFloat()可以用于字符串类型

Number()

  • true为1,false为0
  • null为0
  • undefined为NaN
  • 字符串包含数字(前如果有+-也包含在内),返回数字
  • 字符串包含0x开头的十六进制,返回对应的十进制
  • 空字符串,返回0
  • 非以上情况,返回NaN

parseInt

  • 从第一个非空字符开始转换
  • 第一个非空字符不是正负号和数字,就会返回NaN
  • 空字符串,返回NaN
  • 能够识别八进制和十六进制
  • 第二个参数,是确定几进制
  • 不传第二个参数,就由parseInt自己决定。为了避免出错,建议传参数

parseFloat

  • 只解析十进制,不能穿第二个参数
  • 永远忽略第一个0
  • 十六进制数,永远返回0
  • 没有小数点或者小数点后面是0,就会返回整数

string类型

  • 可以使用双引号,单引号,反引号
  • 字符字面量,是被当作当个字符解释的
    image
    image
  • 字符串是不可改变的,一旦创建,值就不能变了
  • 要修改值,就必须销毁原来的字符串,创建新的字符串

toString方法

  • 数值,布尔值,对象,字符串 都有这个方法
  • 字符串会返回一个自身副本
  • null和undefined 没有这个方法
  • 数值调用这个方法,可以传一个参数,得到的数值是几进制的。默认是10

String方法

  • 如果不确定值是否是null或者undefined,可以使用这个方法
  • 如果值有toString方法,调用toString方法
  • 如果是null,返回null
  • 如果是undefined,返回undefined
  • 加号操作符给一个值加上一个“”,会将其转换为字符串

模板字面量

  • 可以保留缩进和换行
  • 尤其在定义html模板时特别有用
  • 技术上讲,不是字符串,是一种特殊的js表达式,求值后得到的是字符串
  • 在定义时,立即求值并转换为字符串,插入的变量从最近的作用域取值
  • 通过${}实现js表达式,可以是调用函数和方法
  • 所有插入的值,都会使用toString强制转型为字符串
  • 嵌套的模板字符串,不需要转义

模板字面量标签函数

  • 接收的参数是原始字符串数组,和对每个表达式求值的结果

原始字符串

  • 获得模板字符串原始内容
    image

symbol

  • 是原始数据类型
  • typeof返回的是symbol
  • 唯一的,不可变的
  • 可以用作对象属性,这样就能保证不会覆盖任何已有的对象属性
  • 没有字面量语法,只能使用Symbol函数创建
  • symbol函数不能和new关键字一起作为构造函数使用

全局符号注册表

  • 需要重用符号,可以使用symbol.for()
  • 调用symbol.for(),会检查全局运行时的注册表,如果不存在就会创建新的添加到注册表中,如果存在,就会返回该符号

使用符号作为属性

  • 使用字符串和数值作为属性的,都可以使用符号
  • getOwnPropertyNames() 返回常规属性数组
  • getOwnPropertySymbols()返回符号属性数组
  • getOwnPropertyDescriptors()返回常规属性和符号属性
  • Reflect.ownKeys()返回两种类型的键值

posted on 2022-05-10 07:49  社会优先于个人  阅读(51)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3