学习 javascript高级程序设计 (第3版)-- 变量、作用域、内存问题
来源:互联网 发布:c语言中合法的字符常量 编辑:程序博客网 时间:2024/05/22 06:36
一、变量
变量包含两种数据类型:基本类型、引用类型
1、动态属性
例如:var a=new object()
a.name=”xx”
alert(a.name); //返回 xx
例如:var name = “abc”
name.age=27;
alert(name.age); //返回 underfind
基本类型不可以定义动态属性
2、复制变量
基本类型复制变量后,会在变量上创建一个新值,两者操作互不影响;
引用类型复制变量后,只是复制了一个指针,两者指定的是同一个对象;
3、检测类型
typeof()检测基本的数据类型
instanceof() 检测引用类型(对象类型)
例如:
alert(a instanceof Object) //检测a是否是对象
alert(a instanceof Array) //检测a是否是数组
alert(a instanceof RegExp) //检测a是否是正则表达式
4、作用域
例如:function add(num1,num2){
var s=num1+num2;
return s;
}
var result = add(10,20); //返回 30
alert(s); //报错 原因:var定义后 s为局部变量,在外围访问不到
例如:function add(num1,num2){
s=num1+num2;
return s;
}
var result = add(10,20); //返回 30
alert(s); //返回30 原因:未定义var 为全局
5、垃圾收集
Js有一个自动管理垃圾的功能(管理机制:局部变量只在函数执行时存在;)
1、标记清除
当变量进入环境时,会被标记“进入环境”,当离开时标记“离开环境”
2、引用计数
跟踪记录每个值引用的次数来判断
6、管理内存
管理内存最好的方法是 使用null解除引用
小结
:javascript可以保存两种数据类型:基本类型和引用类型:
:基本类型在复制后是创建了一个副本,操作副本与之前值无关
:引用类型在复制后是创建了一个指向对象的指针,所以他们指向的是同一个对象,更改时都会发生改变;
:确定值是哪一种基本类型可以运用typeof操作符,而确定是哪一种引用类型则需要运用 instanceof操作符;
所有的变量都存在与一个执行环境(作用域)中:
:执行环境可以分为:全局执行环境和函数执行环境
:当进入一个新环境时,都会创建一个用于搜索的变量和一个作用域链
: 函数执行环境不仅可以访问函数执行环境中的变量,可以访问其父级以及全局
: 全局环境变量正能访问全局,不可以访问局部
:变量的执行环境有助于确定应该何时释放内存
Js是一门具有自动垃圾收集机制的语言:
:离开作用域的值将被标记为可回收,以便于垃圾收集时释放
:“标记清除”是最常用的一种清除方法,将不用的值进行标记,以便清除
:“引用计数”,这种方法的思想是跟踪所有值引用的次数,js引擎目前不再使用这个方法,但Ie中在引用原生js时,仍然会出现问题
:当代码中存在循环现象时,”引用计数“收集会出现问题
- 学习 javascript高级程序设计 (第3版)-- 变量、作用域、内存问题
- JavaScript高级程序设计学习笔记——变量、作用域和内存问题(重要)
- JavaScript高级程序设计(第4章 变量、作用域和内存问题)
- JavaScript高级程序设计笔记-变量、作用域和内存问题
- JavaScript高级程序设计2--变量、作用域和内存问题
- javascript高级程序设计(变量、作用域和内存问题)
- javascript高级程序设计学习笔记——第四章 变量、作用域和内存问题
- JavaScript高级程序设计之变量、作用域和内存问题之执行环境及作用域第4.2讲敏敏笔记
- Javascript高级程序设计第二版第四章--变量,作用域及内存问题--笔记
- javascript高级程序设计第三版 第四章 变量、作用域和内存问题
- 《javascript高级程序设计》读书笔记(三)变量、作用域和内存问题
- JavaScript高级程序设计之变量、作用域和内存问题之垃圾收集第4.3讲敏敏笔记
- 《JavaScript 高级程序设计》书摘----变量、作用域和内存
- JavaScript高级程序设计 第四章 — 变量、作用域和内存问题
- 《JavaScript高级程序设计》读书笔记--4-变量、作用域和内存问题
- 《JavaScript高级程序设计》总结 第四章 变量、作用域和内存问题
- 《js高级程序设计》学习笔记--4.变量、作用域和内存问题
- JavaScript高级程序设计之变量、作用域和内存问题之基本类型和引用类型的值第4.1讲笔记
- 题目1444:More is better
- cocos2dx 事件响应机制 CCNotificationCenter
- MySQL查看和修改表的存储引擎
- PHP 文档学习 - 5 - 类
- appStore上传苹果应用程序软件发布流程
- 学习 javascript高级程序设计 (第3版)-- 变量、作用域、内存问题
- 【几何】-几何基础大模板(更新中)
- 表达式计算
- POJ 1088 滑雪(DFS+DP)
- PHP的CI框架集成Smarty的最佳方式
- 详解android:scaleType属性
- ubuntu14.04 下安装H3C iNode客户端
- Xcode如何编译Debug版和Release版
- Windows SDK 视频捕获