Skip to content

JS数据类型 #29

Open
Open
@conan1992

Description

@conan1992

1. 基本数据类型

  • null
  • undefined
  • boolean
  • string
  • number
  • symbol(es6)

2. 引用类型

  • Object
  • Array
  • Function
  • RegExp
  • Date
  • 单体内置对象:Global,Math
  • 基本包装类型:Boolean,Number,String

3.应用场景

  • 基本包装类型
var s1 = "some text";
var s2 = s1.substring(2);

第2行代码访问s1时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值,而在读取模式中访问字符串时,后台都会自动完成下列处理:(1)创建String类型的一个实例;(2)在实例上调用指定的方法;(3)销毁这个实例;
可以想象成执行了以下代码

var s1 = new String("some text");
var s2 = s1.substring(2)
s1 = null

注:引用类型和基本包装类型的主要区别在于对象的生存期,使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中;而自动创建的基本包装类型的对象,只存在于一行代码执行瞬间,然后立即被销毁;

  • null不是对象

虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象然而 null 表示为全零,所以将它错误的判断为 object

  • 0.1+0.2为什么不等于0.3?

0.1和0.2在转换成二进制后会无限循环,由于标准位数的限制后面多余的位数会被截掉,此时就已经出现了精度的损失

  • 函数参数
    函数传参的时候传递的是对象在堆中的内存地址值

参考

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions