JavaScript高级程序设计(一)基础总结之变量与赋值
来源:互联网 发布:美编软件 编辑:程序博客网 时间:2024/05/18 15:28
摘要:基本类型存放在栈内存,引用类型存放在堆内存。
1. 问题1: var a = xxx, a内存中到底保存的是什么?
* xxx是一个基本数据,a内存中保存的就是该数据;* xxx是一个对象,a内存中保存的是该对象的地址值;
* xxx是一个变量,最终同上两种。
2. 关于引用变量赋值问题
* 2个引用变量指向同一个对象, 通过一个引用变量修改对象内部数据, 另一个引用变量也看得见
* 2个引用变量指向同一个对象,让一个引用变量指向另一个对象, 另一个引用变量还是指向原来的对象
var a = {name:'vn'} var b = a b.name = 'ez' console.log(a.name) //ez内存图
var b = {name:'vn'} function f(obj) { obj.name = 'tom' } f(b) // 隐含的一步:obj = b console.log(b.name) //tom
var c = {name:'ez',age:18} function f2(obj) { obj = {name:'vn',age:16} //新创建一个对象,即在堆内存中又重新创建了一个新对象 } f2(c) // 第一步:obj = c; 第二步:obj = {name:'vn',age:16} console.log(c.name,c.age) //ez 18
3. 问题: 在js调用函数时传递变量参数时, 是值传递还是引用传递?
* 只有值传递, 没有引用传递, 传递的都是变量的值, 只是这个值可能是基本数据, 也可能是地址(引用)数据
* 如果后一种看成是引用传递, 那就值传递和引用传递都可以有
4. 问题: JS引擎如何管理内存?
1. 内存生命周期
1). 分配需要的内存
2). 使用分配到的内存
3). 不需要时将其释放/归还
2. 释放内存
* 为执行函数分配的栈空间内存: 函数执行完自动释放
* 存储对象的堆空间内存: 当内存没有引用指向时, 对象成为垃圾对象, 垃圾回收器后面就会回收释放此内存
阅读全文
0 0
- JavaScript高级程序设计(一)基础总结之变量与赋值
- 《JavaScript高级程序设计》学习总结之ECMAScript基础(一)
- JavaScript高级程序设计(一)基础总结之数据类型
- javascript进阶之基础篇一: 变量与赋值
- web前端之JavaScript高级程序设计一:变量、作用域
- JavaScript高级程序设计学习总结二(JavaScript复杂的变量与内存问题)
- 《JavaScript高级程序设计》总结一
- 《javascript高级程序设计》总结(一):javascript介绍
- JavaScript高级程序设计学习总结一(基本概念总结)
- javascript高级程序设计学习(一)-----js基础
- javascript高级程序设计总结之二
- javascript高级程序设计总结之三
- javascript高级程序设计总结之四
- javascript基础一(变量与函数)
- javascript 高级程序设计 一
- JavaScript高级程序设计 (一)
- javascript之高级程序设计
- JavaScript高级程序设计(读书笔记)(一)
- 17Python中的CGI编程
- 命令模式学习和思考
- spring jdbc使用总结及示例代码
- 实例 异常类
- python爬取玄幻小书。。。
- JavaScript高级程序设计(一)基础总结之变量与赋值
- 单片机入门知识
- 【20171022】
- 联想G40-30进入PE鼠标键盘失灵解决方法
- [noip2014]解方程 题解
- 实例
- XML解析
- 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
- linux中安装nodejs