共计 706 个字符,预计需要花费 2 分钟才能阅读完成。
JavaScript 中的数据类型
JavaScript 有 5 种简单数据类型:Undefined、Null、Boolean、Number、String 和 1 种复杂数据类型 Object。
基本类型(值类型)
Undefined
Null
Boolean
Number
String
复杂类型(引用类型)
Object
Array
Date
RegExp
Function
基本包装类型
Boolean
Number
String
单体内置对象
Global
Math
类型检测
typeof
instanceof
Object.prototype.toString.call()
值类型和引用类型在内存中的存储方式(画图说明)
值类型按值存储
引用类型按引用存储
值类型复制和引用类型复制(画图说明)
值类型按值复制
引用类型按引用复制
值类型和引用类型参数传递(画图说明)
值类型按值传递
引用类型按引用传递
值类型与引用类型的差别
基本类型在内存中占据固定大小的空间,因此被保存在栈内存中
从一个变量向另一个变量复制基本类型的值,复制的是值的副本
引用类型的值是对象,保存在堆内存
包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针
从一个变量向另一个变量复制引用类型的值的时候,复制是引用指针,因此两个变量最终都指向同一个对象
JavaScript 执行过程
JavaScript 运行分为两个阶段:
预解析
全局预解析(所有变量和函数声明都会提前;同名的函数和变量函数的优先级高)
函数内部预解析(所有的变量、函数和形参都会参与预解析)
函数
形参
普通变量
执行
先预解析全局作用域,然后执行全局作用域中的代码,
在执行全局代码的过程中遇到函数调用就会先进行函数预解析,然后再执行函数内代码。