博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内存、变量、作用域问题
阅读量:5087 次
发布时间:2019-06-13

本文共 862 字,大约阅读时间需要 2 分钟。

1.关于引用变量

  基本类型是指简单的数据段,引用类型是指那些可能由多个值组成的对象。

  1.关于复制变量值

  基本类型中,复制变量时,原本和副本相互独立存在,操作不会相互影响

    var n1 = 5;

    var n2 = n1;

  引用类型中,复制变量时,实际上是复制对象的引用(地址),即两个变量同时指向一个地址,此时对一个变量进行操作,另一个变量也会受到影响。

  2.关于参数传递

  实质上与复制变量相似,基本类型参数传递后,函数内部操作对外部变量没影响,但是引用变量的参数传递中,函数局部变量的变化会体现在函数的外部

  3.检测类型

  typeof  是检测变量是字符串、数字、布尔值还是undefined的最佳工具

  instanceof用来检测某个值是否是指定类型的对象

 

2.执行环境和作用域

1.执行环境

  全局执行环境是最外围的一个执行环境,在Web浏览器中,全局执行环境是指window对象,因此所有的全局变量和函数都是作为window对象的属性和方法创建的。

  某个执行环境所有代码执行完时,该环境会被销毁,保存在其中的所有变量和函数定义也随之销毁。(全局执行环境会在关闭网页或浏览器时才会被销毁)

  当执行流进入一个函数时,函数的环境会被推入到一个环境栈中。当函数执行后,栈将环境弹出,将控制权交还给之前的执行环境(摘自《JavaScript高级程序设计》)

2.内存中的函数对象

  1.创建函数对象时:创建两个新对象

    函数对象:函数定义

    作用域链对象:保存函数对象可用变量的位置对象,默认第一项指向window对象

  2.调用函数时:创建一个对象

    活动对象:专门保存局部变量的对象

      在作用域对象中追加对活动对象的引用

  3.函数调用完成后:

    作用域链中活动对象的引用出栈

    活动对象由于无人引用而释放

转载于:https://www.cnblogs.com/controlms/p/7728260.html

你可能感兴趣的文章
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
测试计划
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>