JavaScript系统学习小结——变量、作用域和内存问题
趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备。
- 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值。
- 基本类型包括:Undefined,Null,Boolean,Number和String,基本类型是按值访问方式;
- 引用类型的值是对象,是按引用方式引用;
- 在复制变量值时,两种数据类型的差异表现在:
- 复制基本类型值后,创建的是这个值的副本,彼此两个变量可以参与任何操作而不会互相影响;
- 复制引用类型值后,两个变量实际上将引用同一个对象;
- 在作为参数传递时,两种数据类型值的传递分别如同他们各自的赋值规律;尽量把参数想象成局部变量,有助于理解“参数只能按值传递”的概念;
- typeof操作符可以用来检测是哪一种基本数据类型;instanceof操作符可以用来检测是哪一种引用数据类型;
- 作用域(执行环境),作用域决定变量的生命周期:
- 执行环境有全局执行环境和函数执行环境之分(不同其他语言,这里没有语句块的作用域);
- 使用var声明的变量会自动被添加到最接近的环境中,没有使用var声明,该变量会自动被添加到全局环境中;因此初始变量之前,一定要声明;
- 垃圾收集机制的原理是:找出不再继续使用的变量,然后释放其占用的内存。
- 浏览器的具体实现通常有两个策略:标记清除、引用计数;
- “标记清除”是目前主流的收集算法;在IE中访问非原生JS对象(BOM,DOM元素)时,会使用到“引用计数”算法,但会导致一些问题(当代码中存在循环引用现象时);
- 内存
- 优化内存的最佳方式,就是为执行中的代码只保留必要的数据。
- 一旦数据不再有用,最好通过将其设置为null来释放其引用(即“解除引用”方法);这一方法适用于大多数全局变量和全局对象的属性;
- 解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。
- 优化内存的最佳方式,就是为执行中的代码只保留必要的数据。
书本类容范围:《JavaScript高级程序设计》P68-82
JavaScript系统学习小结——变量、作用域和内存问题的更多相关文章
- JavaScript系统学习小结——Object类型、Array类型
今天学习JavaSript中引用变量中的Object类型和Array类型: 1. Js中大多数引用类型值都是Object类型的实例,Object类型在应用程序中存储和传输数据时,是非常理想的选择: 创 ...
- 第一百零六节,JavaScript变量作用域及内存
JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...
- JavaScript解析顺序和变量作用域
JavaScript基础之变量作用域. 一. 1.全局变量:全局变量的意思就是,在代码的不论什么地方都能够訪问到.注意:未定义 直接赋值的变量拥有全局属性. 2.局部变量:局部变量的意思就是,变量的作 ...
- javaScript的闭包 js变量作用域
js的闭包 js的变量作用域: var a=90; //定义一个全局变量 function test(){ a=123; //使用外层的 a变量 } test(); document.write(&q ...
- go学习笔记-变量作用域
变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. 变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式 ...
- 浅谈javascript中变量作用域和内存(2)
1.无块级作用域 javascript没有块级作用域,这会让其他程序员在理解js代码上很痛苦.在其他很多语言,比如C,大括号括起来的代码块都有自己的作用域 举个例子 if(true) { var na ...
- JavaScript变量作用域和内存问题(二)
执行环境是js中特别重要的概念,是指变量或者函数可以访问其他数据,定义自己的行为.每个执行环境都有一个与之相对应的变量对象,执行环境中定义的所有变量和函数都保存在这个变量中,我们看不到这个变量,但是后 ...
- 浅谈javascript中变量作用域和内存(1)
先理解两个概念:基本类型和引用类型的值 1.基本类型和引用类型的值 (1)定义: 基本类型:指简单的数据段,比如按值访问的js五种基本数据类型undefined.null.boolean.number ...
- javascript高级程序设计第3版——第4章 变量作用域以及内存
随机推荐
- JSON 转换异常 multipartRequestHandler servletWrapper
下面出现红色的字还有警告,解决方法:本人项目是struts1 from类继承了“extends ActionForm” .把它去掉就行了.如果你是其它的框架一定是继承引起的作个参考吧. ....... ...
- Vulkan Tutorial 18 重构交换链
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 现在我们已经成功的在屏幕上绘制出三角形,但是在某些情况下, ...
- 可能是最详细的 Hexo + GitHub Pages 搭建博客的教程
前言:博主目前大三,Web 前端爱好者.写博客的好处,不是为了写而写,而是一个记录思想的过程.不要考虑它能带给你什么,而是你自己从中收获了什么. 最近刚好有空,于是就参照网上的各种教程,搭建了一个博客 ...
- PHP基础入门(四)---PHP数组实用基础知识
PHP数组 数组是特殊的变量,它可以同时保存一个以上的值. ***关键词:数组基础.数组遍历.超全局数组.数组功能.数组函数. 下面来和大家分享一下有关PHP的数组基础知识,希望对你PHP的学习有所帮 ...
- RecycleView和CardView
一.RecycleView <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" ...
- bootstrap-datepicker的bug:有日期输入的地方在下个月页面选择当天日期会以当天日期减少一个月显示
Bug复现详细描述:先选择今日日期,然后点击下个月的某个日期,注意,是直接点击下个月的某个日期,不能通过日期显示tab的下个月箭头进入下个月再来点击某个日期,然后再直接点击本月的今日日期.然后bug会 ...
- 1.免费安装myeclipse 10以及破解
1.材料准备 jdk1.8.0_101 网盘地址链接: http://pan.baidu.com/s/1ge8Jaz5 密码: qb6v myeclipse-10.6-offline-installe ...
- accp8.0转换教材第10章Ajax和jQuery理解与练习
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构. B/S(Browser/Server)结构即浏览器和服务器结构. 认识ajax .XMLHttpRequest.使用jqu ...
- MyBatis源码解析【1】准备工作
终于迎来了这一天,我觉得现在的我在经历了长时间的学习和开发之后有了一定的经验,所以准备开始学习源码. 今天我将做好充足的准备,在接下来的一个月中,努力的爬过这座大山.(可能不用一个月,但是我觉得需要仔 ...
- JSP基本语法总结【2】九大内置对象
内置对象也称为内建对象,隐含对象,即无需声明,直接可以在JSP中使用的java对象.JSP的内置对象就是把最常用.重要的几个对象直接创建了. JSP有9大内置对象:Request,Response, ...