4. javacript高级程序设计-变量、作用域和内存问题
1.1 基本类型和引用类型的值
变量包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是简单的数据段,引用类型值可以由多个值构成的对象
1.1.1 动态的属性
针对引用对象的值,可以为其动态的添加属性和方法
var person = new Object();
person.name = “chuck”;
alert(person.name); // chuck
1.1.2 复制变量值
(1). 基本类型的变量复制
var num = 5;
var num2 = num;
复制前:
|
num |
5(Number类型) |
复制后:
|
num2 |
5(Number类型) |
|
num |
5(Number类型) |
(2). 引用类型的变量复制
var obj1= new Object();
var obj2=obj1;
obj1.name = “chuck”;
alert(obj2.name) //chuck

1.1.3 传递参数
参数传递情况和复制情况一致,即将变量的值复制到指定的参数中
1.1.4 检测类型
基本类型使用 typeof 检查
引用类型使用 instanceof,语法如下:
result = variable instanceof constructor
例如:
person instanceof Object
colors instanceof Array
pattern instanceof RegExp
1.2 执行环境及作用域
执行环境定义了变量或者函数有权访问的其他数据,决定了它们各自的行为。
每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
全局执行环境是对外围的一个执行函数,在web浏览器中,全局执行环境被认为是window对象,因为所有全局变量和函数都是作为window对象的属性和方法建立的
每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈中,当这个环境执行之后,栈将其环境弹出,把控制权返回给之前的执行函数
当代码在一个环境中执行的时候会创建一个作用域链,作用域链的前端,始终都是当前执行的代码所在的环境的变量对象。如果这个环境是函数,则将其活动对象作为变量对象。活动对象最开始的时候只包含一个变量,即arguments对象,作用域链中的对象来自外部环境,而下一个变量对象则来自于下一个包含环境,这样一直延续到全局变量,全局变量的执行环境始终都是作用域链中的最后一个对象。
作用域链中的对象,内部环境可以通过作用域链访问外部环境,外部环境不能访问内部环境
|
var color = "blue"; function changeColr(){ var anotherColor = "red"; function swapColor(){ var tempColor = anotherColor; anotherColor = color; color = tempColor; //这里可以访问color、anotherColor和tempColor } //这里可以访问color、anotherColor,但 不能访问tempColor swapColor(); } //这里只能访问color changeColr(); |

1.3 垃圾回收
javascript具有自动垃圾回收机制
(1). 离开作用域的值将自动标记为可以回收,将在垃圾收集期间被删除
(2). “标记清除”是目前主流的垃圾回收算法
(3). 另一种垃圾回收算法是“引用计数”
(4). 解除变量不仅能够消除循环引用,而且对垃圾回收也有好处
4. javacript高级程序设计-变量、作用域和内存问题的更多相关文章
- 第一百零六节,JavaScript变量作用域及内存
JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...
- 3. javacript高级程序设计-基本概念
1.1 语法 ECMAScript借鉴了C和其他类C语言的语法 1.1.1 区分大小写 ECMAScript中的一切(变量,函数和操作符)都是区分大小写的,变量test和Test是不同的变量 1.1. ...
- 笔记-JS高级程序设计-变量,作用域和内存问题
1在将一个值赋给变量时,解析器必须确认这个值是基本类值还是引用类型值,基本类型值是按值访问的,可以操作保存在在变量中的实际值,引用类型是保 存在内存中的对象,JS不允许直接访问内存中的位置,所以实际操 ...
- 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这 ...
- javascript高级程序设计第3版——第4章 变量作用域以及内存
- 6. javacript高级程序设计-面向对象设计
1. 面向对象设计 1.1 理解对象 1.1.1 属性类型 (1). 数据属性:相当于对象的字段,包含一个数据值的位置,在这个位置可以读取和写入值.数据属性中有4个描述其行为的特性: l [[Conf ...
- JavaScript变量作用域和内存问题(二)
执行环境是js中特别重要的概念,是指变量或者函数可以访问其他数据,定义自己的行为.每个执行环境都有一个与之相对应的变量对象,执行环境中定义的所有变量和函数都保存在这个变量中,我们看不到这个变量,但是后 ...
- js 变量 作用域及内存
由于Javascript是松散型的,所以其变量只是在特定时间用于保存特定值的一个名字而已,并不存在某个变量必须保存某种类型的值的规则,变量的值以及其数据类型都可以在脚本的声明周期内改变 一.基本类型与 ...
- 浅谈javascript中变量作用域和内存(1)
先理解两个概念:基本类型和引用类型的值 1.基本类型和引用类型的值 (1)定义: 基本类型:指简单的数据段,比如按值访问的js五种基本数据类型undefined.null.boolean.number ...
随机推荐
- mongodb 基本用法大全
1>给数据库添加用户名密码 db.addUser("xxx","yyy") 2>
- vijos1740 聪明的质监员 (二分、区间求和)
http://www.rqnoj.cn/problem/657 https://www.vijos.org/p/1740 P1740聪明的质检员 请登录后递交 标签:NOIP提高组2011[显示标签] ...
- Sublime Text 3初阶
本文主要介绍一些Sublime Text3的初级阶段,主要从最初的安装,到插件,还有主题这三个方面介绍,还会提到一些关于使用ST3的一些小小经验... 一:安装 首先进入sublime的官方地址去下载 ...
- ubuntu 14.04 安装mysql server的分支MariaDB Server初级教程
序,MariaDB Server是Mysql的fork版本,与Mysql完美兼容,mysql在10年被sun收购,后sun被oracle收购,后mysql的创建者及项目长期技术带头人之一的Michae ...
- ASP FORM表单提交判断
ASP提交表单是先进行Form填写检测,检测完成没问题之后再执行写入数据库表操作. 相关源码: <script language="javascript"> funct ...
- 只会CSS还不够,LESS、SASS、BootStrap、Foundation一网打尽!
有些人想学CSS,不知如何下手:有些人已经学会CSS的各种属性,却不知如何运用:有些人会平面设计,不知道如何与网页设计结合:有些人会HTML,就是学不会CSS.试问自己,图中的技术你都会了吗? 别总是 ...
- java系列-安装MySql(三)
第一大步:MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装 ...
- An error I have completed recently
在上学期开发javaweb的项目中,遇见一个字符串池的问题. 大致如下: 在上传一篇文章的时候,通过字符串的截取获取该篇文章的后缀名,如doc.pdf.txt....然后规定只能上传pdf和doc格式 ...
- 第2月第3天 egorefresh
egorefresh是很老的下拉刷新,它是一个uiview,在uitableview 下拉的时候显示不同的界面. egorefresh和uitableview的耦合度很高,uitableview滚动和 ...
- 中国天气预报数据API收集
{"weatherinfo":{"city":"北京","cityid":"101010100" ...