JavaScript 变量作用域 & 内存
来源:互联网 发布:kvm ubuntu 编辑:程序博客网 时间:2024/06/05 03:23
1.变量类型
基本类型 : 保存在栈内存中 , 这个值完全保存在内存中的一个区域.
引用类型 : 保存在堆内存中 , 变量中保存的实际上是一个指针, 这个指针指向内存中的另一个位置, 该位置保存对象 . ( 先读栈内指针, 再根据这个指针指向堆内存相应区域 )
变量赋值 : 如果是基本类型, 则相当于在栈内存中又开辟了一块内存空间来存储, 例如 var num2 = num1 , 虽然 num2 与 num1的值是完全相等的, 但是, 在内存中是独立的.
引用赋值 : 间接 , 只是在栈内存中分配一个区域来保存新的指针, 而这个新的指针与原指针指向同一个堆区域 .
2. 参数传递
按值传递, 就类似赋值, 会在栈内存中开辟空间, 来保存形式参数的内容 .
3. 检测类型
检测基本类型 : typeof 是最好的工具 var s = "string" alert( typeof s ) // 显示结果为string
检测引用类型 : instanceof 如果变量是引用类型的实例, 就会返回 ture , 例如 alert ( person instanceof Object ) ;
注: 执行环境
执行环境是 JavaScript中最为重要的一个概念, 在 Web 浏览器中, 全局执行环境被认为是 window 对象, 因此所有全局变量和函数都是作为window对象的属性和方法创建的.某个执行环境中的所有代码执行完毕后, 该环境被销毁, 保存在其中的所有变量和函数定义也随之销毁.( 全局执行环境直到应用程序退出-例如关闭网页或浏览器 )
每个函数都有自己的执行环境, 当执行流进入一个函数时, 函数的环境就会被推入一个环境栈中, 而在函数执行之后, 栈将其环境弹出, 把控制权返回给之前的执行环境.
4.没有块级作用域
在 C 语言中 for( var i = 10; i > 0; i-- ) {} 此处的 i 不可以在 for 循环以外的区块中使用 , 但是 JavaScript中就可以在 for循环以外的区块中使用 .
有函数块区域 , 但是没有作用域 ( if , for 等等 )
5.管理内存
JavaScript有自动回收内存机制, 但是, 优化内存还是很有必要 , 最好的办法是 ,执行中的代码只保存必要的数据. 一旦数据不再有用, 最好通过将其值设置为null来释放其引用-这个做法叫做解除引用.这一做法适用于大多数全局变量和全局对象,局部变量没关系(会自动被解除) , 堆中的自动消除, 只要将连接该堆的指针设置成 null , 当系统检测到没有指针连接该堆时, 就会将该堆的内存释放.
6. For in
在javascript 中有一种 for in 语句, 与C语言相区别, 作用一般是遍历数组或者是对象的属性.
for ( 变量 in 对象 )
{
// 在此执行代码
} "变量" 用来指定变量, 指的变量是数组元素或者对象属性.
var mycars = new varry() ;
var x;
mycars[0] = "ben" ;
mycars[1] = "bmw";
for ( x in mycars)
{
document.write(mycars[x]+"<br />") ; // 注意此处, HTML语句要写在 "" 内.
}
7. Javascript 中的特殊字符
\'单引号\"双引号\&和号\\反斜杠\n换行符\r回车符\t制表符\b退格符\f换页符这些都是在双引号之内 "" .
\ 不用放在引号内"" 表示换行, 例如 document.write(" Hello \
World " ) ;
- JavaScript 变量作用域 & 内存
- [JavaScript]-----变量,作用域,内存
- JavaScript 变量 作用域 内存
- javascript变量,作用域,内存
- JavaScript中变量、作用域、内存问题
- JavaScript变量、作用域及内存问题
- JavaScript-变量、作用域、内存 小抄
- JavaScript变量作用域和内存
- 【JavaScript】变量、作用域和内存问题
- JavaScript变量、作用域、内存、垃圾回收
- JavaScript 变量、作用域和内存问题
- JavaScript-变量、作用域和内存问题
- JavaScript变量、作用域及内存
- JavaScript变量、作用域及内存
- [12]javascript变量、作用域及内存
- javaScript 变量 作用域和 内存问题
- 【JavaScript】04变量、作用域及内存
- Javascript变量、作用域和内存问题
- EditText_XML属性
- 远程桌面控制(3)接收端端线程
- ubuntu建立和删除用户
- 收藏:facebook使用教程系列
- TextView_XML属性
- JavaScript 变量作用域 & 内存
- 内存泄漏检查方法总结
- 查询ip归属地的shell脚本
- 6款免费的C++图形和游戏库
- php显示ip地址的类
- Windows 7添加Access数据源
- Android player 流程(供参考)
- 苹果携手百度 两家将共享广告营收
- thrift src