javascript高级程序设计第四章 变量、作用域和内存问题
变量包含两种,,基本类型和引用类型
基本类型是指一些简单的字段;
引用类型是☞由多个值构成的对象 引用类型的值是保存在内存中的对象,在javascript中是不允许直接访问内存中的位置;
函数的参数是按照值类型进行传递的,函数的参数可以看作是一个局部变量。
检测类型:
typeOf 用来检测基本类型的值用处大,在检测引用类型的值得时候用处不是很大 检测到的Null类型返回结果为Object,
insctanceof 用来检测引用类型的值,当检测的对象是引用类型的值或者Object时返回true用来检测基本类型是返回flase。
执行环境和作用域:
子集找不到的变量会向上进行搜索,子集可以访问父级的变量,父级不能访问子集的变量,在严格模式下未使用var声明的变量会报错;
在javascript中没有块级作用域,没有经过var声明的变量会当做全局变量来处理,但严格模式下会报错;
垃圾回收机制
在javascript中不用程序员之际来管理内存,当一个变量没有被引用时,垃圾回收机制就会将该变量的内存收回,垃圾回收机制采用的是“标记清除”机制,使用“计数”机制会有BUG
当两个变量相互引用时,使用“计数”机制将会使两个变量不能被回收,当一个变量不使用时,最好将该变量复制为Null,这样当回收机制执行时,就会将该变量的内训收回;
javascript高级程序设计第四章 变量、作用域和内存问题的更多相关文章
- 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这 ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...
- JavaScript高级程序设计学习(四)之引用类型
在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...
- 《JavaScript高级程序设计》笔记:变量、作用域和内存问题(四)
基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型的值指那些可能有多个值构成的对象. 动态的属性 var p ...
- js高级程序设计(四)变量、作用域和内存问题
基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是 Undefined . Null . Boolean . Number 和 S ...
- 精读《javascript高级程序设计》笔记二——变量、作用域、内存以及引用类型
变量.作用域和内存问题 执行环境共有两种类型——全局和局部 作用域链会加长,有两种情况:try-catch语句的catch块,with语句. javascript没有块级作用域,即在if,for循环中 ...
- JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...
- JavaScript中变量、作用域和内存问题(JavaScript高级程序设计第4章)
一.变量 (1)ECMAScript变量肯能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象. (2)基本数据类型是按值访问,可 ...
随机推荐
- 史上自定义 JavaScript 函数Top 10
http://www.dustindiaz.com/top-ten-javascript/ 发布:wpulog | 发布时间: 2010年4月9日 10个被使用的最普遍的用户自定义函数,add ...
- 安装GIT,集成到Powershell中
1.首先安装GIT http://msysgit.github.io 下载最新版,然后安装.没什么好说的. 装完之后,把 安装路径/bin 加入到环境变量的Path中 2.删除Git的右键菜单 安装完 ...
- laravel的门面模式
核心技术是__callStatic()方法,当调用的方法不存在时,会自动调用魔术方法__callStatic()方法,和__autoload()方法同工异曲.
- 用sublime写出的第一个网页
STEP1 完成语义分析器 我用的vs2013 c语言写的 这个过程会在下一篇文章中详讲 准备好几个编译好的图,放在一个文件夹里,像下面这样 STEP2 规划好html的框架 上代码! (截图版) ( ...
- mac os 下的sublime --- 快捷键
mac os 下的sublime ---列模式 http://www.oschina.net/question/249672_161413 触控板也可以的:左手同时按住 Option 和触控板左下角 ...
- Python开发【第九章】:堡垒机实例
一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 模块安装 C:\Program Files\Python 3.5\Scri ...
- RHEL6.5 换源
由于redhat的yum在线更新要收费,即没有注册的无法使用:将redhat的yum卸载.重装第三方源. 第三方源包括:网易,重庆大学,epel 等Author wood_man.2015.10.2 ...
- Issue 2:Introduction 方法论
1 清晰的思路 论文投稿完毕,彻底完事儿后,原本很反感的论文书写过程也有了些许心得:论文就是科研工作的文字总结,知识再提炼的过程. 想要写好Introduction,脑子里的一条主线必须清楚. 1.1 ...
- 创建redis集群
假设你已经安装好了redis ,如果还没有请安装 将多个实例跑起来 创建一个目录,比如 redis-cluster 把redis-server拷贝到这个目录下 在目录下为每一个实例创建一个文件夹 在每 ...
- Memcached,你懂的
一.Memcached简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网 ...