您的位置:首页 > Web前端 > JavaScript

JavaScript学习小结

2015-08-24 17:09 811 查看
JavaScirpt变量可用来保存两种类型值:基本类型值,引用类型值

基本类型值: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.结果就是函数内部的所有变量都会被立即销毁,除非将某些变量赋值给了包含作用域中的变量。

闭包还可以用于在对象中创建私有变量:

注意:因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: