您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

记录学习第一天:JS中的数据类型,typeof底层原理,JS中的堆栈内存

JS中的数据类型

数据类型分类

  1. 原始值类型(俗称:值类型,基本数据类型)
  • number
    特殊的number:NaN 判断方法:isNaN & Object.is(Value1,Value2)
    Infinity:正无穷大
  • string
  • boolean
  • null
  • undefined
  • symbol
    给对象设置唯一值属性(对象属性名类型:字符串、Symbol)
    Symbol.hasInstance/toStringTag/toPrimitive…
  • bigint
    Number.MAX_SAFE_INTEGER/MIN_SAFE_INTEGER JS中的最大/最小安全数字
    数字后面加n就是bigint类型的中,例如:9007199254740991n,bigint值保证我们超过安全数字,计算也可以准确
    服务器返回超大数字,我们可以把其转换为bigint再进行运算;运算完的结果,变为字符串传递给服务器即可
  1. 对象类型(俗称:引用数据类型)
  • 标准普通对象
function Person () {
	this.name = '张三',
	this.age = 20,
	this.sayName = function () {
		console.log(this.name);
	}
}
  • 标准特殊对象
    数组、正则、日期、错误…
  • 非标准特殊对象
    原始类型的值,基于构造函数,new出来的实例对象
let a = new Number(1);
  • 可调用/执行对象(函数对象)
    function

JS中的数据类型检测

  1. typeof
  • 检测结果是一个字符串,字符串中包含对应的数据类型
console.log(typeof typeof typeof 10);	//"string"
  • 局限性(特点)
    • typeof null 结果是:“object”
    • typeof检测对象类型,除函数对象返回"function",其余都是返回"object"(不能细分对象)
    • typeof检测一个未被声明的变量,不会报错,而是返回"undefined"
  • 底层处理机制
    • 所有的数据类型值,在计算机底层都是按照“二进制”来存储的(64位)
    • typeof检测数据类型,就是按照存储的“二进制值”来进行检测的:前三位是000的,都被认为是对象(如果对象内部实现了[[Call]]方法,则认为是函数,返回"function"),返回值是"object"…
    • 由于typeof是根据底层判断,所以typeof的性能会相对好一些
  1. instanceof
  2. constructor
  3. Object.prototype.toString.call()

JS执行时的堆栈内存以及VO、AO

浏览器会从计算机的内存条中分配出对应的内存,用来存储值和运行代码

  1. Stack:栈内存 ECStack(Execution Context Stack)
  • 原始值类型存储在栈内存中
  • 提供对应的执行上下文EC供代码执行
  • EC(G)全局执行上下文,全局代码都在这里执行
    • VO(G)全局变量对象,存储全局上下文中声明的变量**(基于let/const声明的变量放在这里,基于var/function声明的变量是直接存储到GO中的)**
  1. Heap:堆内存
  • 存储对象类型的值
  • GO:全局对象(global object)
    • 被分配一个内存空间,用来存储内置的API
  1. var 变量 = 值
    • 先创建值
    • 声明变量(declare)
    • 变量和值关联(defined)赋值
  2. 全局上下文中使用变量
    • 先看VO(G)中是否有
    • 再看GO中是否有
    • 如果都没有就报错,变量未被定义
  3. 变量赋值优先级 a.x = b = 10;
    • 创建值10
    • a.x是成员访问,优先级比较高,执行a.x = 10;
    • b = 10;
    • 正常顺序:从右到左,遇到优先级较高的,则先执行优先级高的操作

例题:

var a = {
    n: 1
};
var b = a;
a.x = a = {
    n: 2
};
console.log(a.x);	//"undefined"
console.log(b);		//{ n:1, x:{ n:2 } }

在这里插入图片描述


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进