Javascript中 VO GO EC

 当浏览器一打开的时候会开辟两个内存,一个堆内存,一个栈内存,栈内存存的是基本类型,(null,undefiend,number,string,Symbol//唯一值,bigint//安全有效数值,Boolean)
bigint //es7中 出现的 那么就会有人问 什么是安全有效数字呢 因为 当数字足够大的时候,就会出现计算错误 那么安全数字是多少呢 Math.pow(2,53)-1//9007199254740991 在扩展一项 或者是 用Number 怎么获取最大安全数或最小安全数 Number.MAX_SAFE_INTEGER(最大)//9007199254740991 最小呢 Number.MIN_SAFE_INTEGER//(
-9007199254740991)
害,张三:‘我就不信你说的,我来试试’

 我:‘张三,看是不是计算的出错了,还不信我?我能骗你不成?’
  张三:‘那怎么解决呢?’
我:‘这里就要用到BigInt了’
BigInt(val)//val可以是 数字也可以是纯数字的字符串
结果:BigInt('10')//10n
9007199254740991n+12n

返回的是bigint类型 那就问了那怎么转成正常的类型呢
Number(9007199254741003n)//指定不行,返回的还是错误 那怎么处理呢
9007199254741003n.toString()//'9007199254741003' 解决完事
张三:‘牛啊,哥哥’

堆内存存的是引用类型 

GO(gaGlobal Object)//全局对象

变量对象 VO(Variable Object): 存放当前执行上下文中创建的变量和值

全局执行上下文( EC(G) ):页面加载后进栈、销毁后出栈

解释 一下 var,const,var 申明变量的过程,比如 var a=2  var b=a b=3 console.log(a)//3
  先是创建值 然后指向 再说个题外话 var 申明的变量 都是存在 GO//全局中
var a=2 是 先是出现一个2 ---> a---->2(a指向2)然后又申明一个变量b 指向a  就好比b--->a--->2
b=3,因为是基本类型所以修改的就是a---->3
这里我我解释一个函数,给大家解释

 

var x = [12, 23]

function fn(y) {

y[0] = 100;

y = [100]

y[1] = [200]
console.log(y)//[100,[200]]

}

fn(x)

console.log(x)//[100,23]
那么为什么呢,我来解释一下
全局有一个x是存在 GO里面的,因为是引用类型,所以存的是地址,假如[12,23]指向的地址是0x001

在这个函数里面,fn(x)执行x实参传递给形参y y[0]指向的就是0x001修改了全局x的值//[100,23]
第二步 y=[100],这里就好比一个y又重新指向了[100]//假如地址是0x002
y[1]=[200]//先去找y是不是存在 y存在 y[1]=[200]//[200]假如地址是0x003及函数体内 console.log(y)//--->[0x002,0x003]--->[100,[200]]


题外  再说一个GO里面存放了很多api,比如alert,setInterval,setTimeout....
那么为什么我们在执行中可以用到这些api呢,该怎么解释呢,因为在全局执行上下文中,会默认创建一个window---->GO//指向的是地址,那么在解释一下 为什么 console.log(x)//一个没有申明的变量,会报错,控制台出现x is not defined 如果是console.log(window.x)//undefiend
这是为什么呢,因为值执行上下文中 直接打印未申明的x,先是在执行上下文中找及EC,EC未找到,则去GO里面找,如果没找到,则报错,如果是console.log(window.x)这样的话,全局EC(执行上下文的window指向的GO的地址)因为是一个Object所以不会报错//返回undefiend



 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值