<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>变量、作用域和垃圾回收</title></head><body><div id="box"></div><script>//一、变量:存数据的,数据分为数值类型和引用类型//1.数值类型:number,string,boolean,undefined,null//复制的是实际的值var num1 = 5;var num2 = num1;num1 = 6;console.log(num2);//5//2.引用类型:object和symbel//复制的实际上是一个指针,指向同一个对象var obj1 = new Object();obj2 = obj1;obj1.name = "王二小";console.log(obj2.name);//王二小//检测类型:typeof检测基本类型,instanceof检测引用类型var s = "王二小";console.log(typeof s);//stringvar obj = new Object();console.log(obj instanceof Object);//true//二、作用域:全局作用域和局部作用域//1.全局执行环境被认为是window对象。所有全局变量和函数都是作为window对象的属性和方法创建的。//全局执行环境直到应用程序退出例如关闭网页偶浏览器时才会被销毁。//2.局部作用域:函数的作用域链包含两个对象:它自己的变量对象和全局环境的变量对象//局部作用域:当前函数-》父函数-》全局环境var color = "blue";function changeColor () {var anotherColor = "red";function swapColors () {var tempColor = anotherColor;anotherColor = color;color = tempColor;//这里可以访问tempColor,anotherColor,color
         }//这里可以访问anotherColor,color,但不能访问tempColor
         swapColors();}changeColor();//注:内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境的任何变量和函数。//三、内存:作用域有助于确定何时释放内存//离开作用域的值将被自动标记为可以回收,因此将在垃圾收集期间被删除//垃圾收集:标记清除和引用计数;//1.标记清除是目前主流的垃圾收集算法,当变量进入环境时,就将这个变量标记为“进入环境”,当变量离开环境时,则将其标记为“离开环境”//2.引用计数:跟踪记录所有值被引用的次数。当引用次数为0时,垃圾收集器下次再运行时就会释放其内存//3.为了确保有效地回收内存,应该及时解除不再使用的全局对象、全局对象属性以及循环引用的变量的引用。将其值设为nullvar element = document.getElementById("box");var myObject = new Object();myObject.element = element;element.someObject = myObject;myObject.element = null;element.someObject = null;</script></body>
</html>

转载于:https://www.cnblogs.com/xiyuyizhihua/p/10876734.html

第4章javascript变量、作用域和内存回收相关推荐

  1. JavaScript高级编程设计(第三版)——第四章:变量作用域和内存问题

    系列文章目录 第二章:在html中使用javaScript 第三章:基本概念 第四章:变量作用域和内存问题 第五章:引用类型 目录 系列文章目录 前言 一.基本数据类型和引用类型的值? 1.数据类型 ...

  2. JavaScript变量作用域和内存问题(js高级程序设计总结)

    1,变量 ECMAScript和JavaScript是等同的吗?个人认为是否定的.我的理解是这样的,ECMAScript是一套完整的标准或者说协议,而JavaScript是在浏览器上实现的一套脚本语言 ...

  3. JavaScript变量作用域如何像多个级别的政府一样

    by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) JavaScript变量作用域如何像多个级别的政府一样 (How JavaScript variable sco ...

  4. 实例浅析javascript变量作用域

    全局域变量在局部可见,局部变量在全局不可见 var global_value = 'global value';  func(); console.log(local_value); function ...

  5. javascript变量作用域一点总结

    前言:javascript里变量作用域是个经常让人头痛抓狂的问题,下面通过10++个题目,对经常遇到又容易出错的情况进行了简单总结,代码样例很短很简单 题目一 var name = 'casper'; ...

  6. 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题

    5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对 ...

  7. javascript 变量作用域

    为什么80%的码农都做不了架构师?>>>    javascript中的变量的作用域不同于java/c的变量规则. 1.在java/c中,如果有一个全局变量与一个局部变量重名,那么在 ...

  8. 变量,作用域,和内存问题

    js 变量是松散类型的本质,决定了它只是在特定时间内用于保存特定值的一个名称而已. 基本类型 栈内存中的简单数据段 5种 underfined Null Boolean Number String.固 ...

  9. js基础之--变量 作用域和内存问题

    基本类型:Undefind Null Boolean Number String 引用类型: 对象 在操作对象时,实际上实在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的. 从一个变 ...

最新文章

  1. WSS(MOSS)如何修改Rich文本编辑器的宽度
  2. 题目梳理(一)(2019.07.06~2019.07.20)
  3. Py之Xlrd:Xlrd简介、安装、使用方法(读取xlsx文件的shee表头名/总行数/总列数、每一行的内容、指定列的内容)之详细攻略
  4. Preparation for International Women's Day
  5. url的关键字不知道是uft-8还是GBK
  6. “约见”面试官系列之常见面试题之第六十九篇之document.ready和onload的区别(建议收藏)
  7. 【转】SharePoint 2010 Search Service -- 管理中心配置
  8. LeetCode 98. 验证二叉搜索树(中序遍历)
  9. 为托管应用程序添加DPI Aware支持
  10. 单元测试java小白_一位Java应届毕业生工作7个月后的小结
  11. matlab生成西门子plc源文件,【图】西门子step7功能块的属性及生成源文件的步骤...
  12. java从本地下载pdf文件_java下载PDF文件
  13. android sdk模拟器中文版,安卓sdk自带模拟器的使用
  14. 将图片排版至docx文档中
  15. HTML网页设计制作——响应式网页影视动漫资讯bootstrap网页(9页)
  16. matlab幻方置乱,幻方置乱,magic scrambling,音标,读音,翻译,英文例句,英语词典
  17. 什么是数位板? 数位板,又名绘图板、绘画板、手绘板等等,是计算机输入设备的一种,通常是由一块板子和一支压感笔组成,它和手写板等作为非常规的输入产品相类似,都针对一定的使用群体。 与手写板所不同的是
  18. 汽车变速系统的换挡律
  19. 311 稀疏矩阵的乘法
  20. camus执行任务,偶发性异常

热门文章

  1. Java 20年:JVM虚拟化技术的发展
  2. 图(1)——图的定义和基本概念
  3. Notes客户端重新配置批处理
  4. anaconda使用方法
  5. PostCSS理解与运用
  6. 计算机网络第六版——第二章复习+课后答案
  7. 抠图+修图+调色+合成+特效Photoshop核心应用5项修炼pdf
  8. java web利用mvc结构实现简单聊天室功能
  9. IOS工作笔记(五)
  10. jq:jQuery库文件jquery.scrollLoading.js使用方法