JavaScript学习小结
2015-08-24 17:09
811 查看
JavaScirpt变量可用来保存两种类型值:基本类型值,引用类型值
基本类型值:Undefined,Null,Boolean,Number,String
2.从一个变量向另一个变量复制基本类型值,会创建这个值的一个副本;
3.引用类型的值是对象,会保存在堆内存中;
4.包含引用类型值的变量实际上包含的并不是对象本身,而是指向该对象的一个指针;
5.从一个对象向另一个对象复制引用类型值,复制的其实是指针,两个变量始终指向同一个对象;
6.确定一个值是那种基本类型可以使用typeof操作符,而确定一个值是那种引用类型要使用instanceof操作符。
2.每次进入一个新执行环境,都会创建一个用于搜索变量和函数的作用域链;
3.函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含(父)环境,乃至全局环境;
4.全局环境只能访问在全局环境候中定义的变量和函数,而不能直接访问局部环境候总的任何数据;
5.变量的执行环境有助于确定应该何时释放内存。
2.”标记清除”
3.引用计数
4.当代码中出现循环引用现象时,引用计数算法则会导致问题;
5.解除变量引用不仅有助于消除循环引用现象,而且有利于垃圾收集。
2.在无法确定如何引用函数的情况下,递归函数就会变得复杂,而且递归函数的性能并不高;
3.递归函数应始终使用arguments.callee来递归调用自身,不要使用函数名,因为函数名可能会发生变化。
在函数内部定义了其他函数时,就创建了闭包,闭包有权访问包含函数内部的全部变量:
1.在后台执行环境中,闭包的作用连包含着她它自己的作用域、包含函数的作用域和全局作用域;
2.通常函数的作用域及其所有变量都会在函数执行结束后被销毁;
3.但是,当函数返回了一个闭包是,这个函数的作用域将会一直在内存中保存到闭包不存在为止。
使用闭包可以在javascript中创建块级作用域:
1.创建并立即调用一个函数,这样既可以执行其中的代码,又不会在内存中留下对该函数的引用;
2.结果就是函数内部的所有变量都会被立即销毁,除非将某些变量赋值给了包含作用域中的变量。
闭包还可以用于在对象中创建私有变量:
注意:因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。
基本类型值:Undefined,Null,Boolean,Number,String
基本类型及引用类型值特点:
1.基本类型值在内存中占据固定大小的空间,被保存在栈内存中;2.从一个变量向另一个变量复制基本类型值,会创建这个值的一个副本;
3.引用类型的值是对象,会保存在堆内存中;
4.包含引用类型值的变量实际上包含的并不是对象本身,而是指向该对象的一个指针;
5.从一个对象向另一个对象复制引用类型值,复制的其实是指针,两个变量始终指向同一个对象;
6.确定一个值是那种基本类型可以使用typeof操作符,而确定一个值是那种引用类型要使用instanceof操作符。
关于执行环境:
1.执行环境有全局执行环境和函数执行环境之分;2.每次进入一个新执行环境,都会创建一个用于搜索变量和函数的作用域链;
3.函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含(父)环境,乃至全局环境;
4.全局环境只能访问在全局环境候中定义的变量和函数,而不能直接访问局部环境候总的任何数据;
5.变量的执行环境有助于确定应该何时释放内存。
垃圾收集
1.离开作用域的值将被自动标记为可回收,因此将在垃圾收集期间被删除;2.”标记清除”
3.引用计数
4.当代码中出现循环引用现象时,引用计数算法则会导致问题;
5.解除变量引用不仅有助于消除循环引用现象,而且有利于垃圾收集。
函数表达式:
1.函数声明并非函数表达式,函数声明要求有名字,但是函数表达式并不需要,没有名字的函数表达式叫做匿名函数;2.在无法确定如何引用函数的情况下,递归函数就会变得复杂,而且递归函数的性能并不高;
3.递归函数应始终使用arguments.callee来递归调用自身,不要使用函数名,因为函数名可能会发生变化。
在函数内部定义了其他函数时,就创建了闭包,闭包有权访问包含函数内部的全部变量:
1.在后台执行环境中,闭包的作用连包含着她它自己的作用域、包含函数的作用域和全局作用域;
2.通常函数的作用域及其所有变量都会在函数执行结束后被销毁;
3.但是,当函数返回了一个闭包是,这个函数的作用域将会一直在内存中保存到闭包不存在为止。
使用闭包可以在javascript中创建块级作用域:
1.创建并立即调用一个函数,这样既可以执行其中的代码,又不会在内存中留下对该函数的引用;
2.结果就是函数内部的所有变量都会被立即销毁,除非将某些变量赋值给了包含作用域中的变量。
闭包还可以用于在对象中创建私有变量:
注意:因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。
相关文章推荐
- JS要求所有已经点击过,然后才执行方法
- Ext JS6框架各库文件的区别
- JS中hasOwnProperty作用讲解
- 表单验证之validform.js使用方法
- JS 操作cookie概
- 什么是JavaScript闭包终极全解之一——基础概念
- JS做简单的验证码
- javascript通过数日两个日期之间的比较分离
- [rxjs] Demystifying Cold and Hot Observables in RxJS
- JSON对象和字符串之间的相互转换
- js淡入淡出的图片轮播效果代码分享
- EXT JS中如何设置应用的主题
- js汉字转拼音的方法
- js日期格式化
- ExtJs博客前奏
- js从url中获取参数
- JS精度计算
- js上一页/下一页真分页的页码生成
- Extjs grid select 选取行内容
- Json的序列化与反序列化