JS高级程序设计笔记(二):变量、作用域和内存

来源:互联网 发布:表白失败知乎 编辑:程序博客网 时间:2024/06/05 20:28

参数

JS中的参数传值都是按值来传递,无论是基本类型还是引用类型的变量。
如果是基本类型的参数,则值会复制一份给命名参数/arguments对象。
如果是引用类型的值则会把该值在内存中的地址复制一份给参数/arguments对象,此时该局部变量(函数的参数实际上是一个局部变量)的变化会反应在函数外部,因为操作的是同一个对象。

变量类型检测

使用typeof操作符可以检测出基本类型,除了null 会返回object
此外,检测方法会返回function,除此以外的引用类型都是返回object
基本类型的数据其大小是固定的,保存在粘中;引用类型的数据保存在堆中。

作用域

所有的变量都存在于一个执行环境(作用域)中。每当进入一个新的执行环境,都会创建一个作用域链。作用域链保存了变量对象(保存了可访问的属性和方法)的引用,保证了标识符的有序搜索。
全局变量在使用完毕后最好进行引用解除,即obj = null。以便垃圾收集器在下次运行的时候回收内存。
访问一个未声明的变量会报错:ReferenceError: num is not defined。而访问对象不存在的属性返回的是undefined
通常对必填参数使用命名参数形式,而对可选参数使用对象字面量来封装。

0 0
原创粉丝点击