引用(reference)、做用域(scope)、闭包(closure)以及上下文(context)是JavaScript重中之重的基础,也是学习好JavaScript的基础。在这里我以浅显的理解给你们分享一下:编程
1、首先说明下引用(定义):引用是指向一个对象实际位置的指针;数组
说明:在这里你们也许这话不大好理解,浅显地说:“引用” = “别名”。(我想)也就是在编程语言给变量、对象…..等起个名称,以便于在须要的时候进行调用。闭包
变量也是对象,那下面就以变量简单的事例为例编程语言
例如:假若有个变量 a, 想在下次用的时候引用它,给它起个别名 b;函数
Int a;学习
Int &b =a;//记住:指向 对象实际位置的指针。(嘿嘿…若是你对指针很理解,那下面就不用看了,编程嘛,学习不会的知识)spa
注意 1:在这里是对变量的引用,内存并不为它开辟实际的内存单元,b和对表明同一变量单元,在申明一个引用时,必须同时使之初始化。(只有申明,没有定义,只是申明它和原有的某一变量的关系。在引用时 a 、两值同时随之其中之一的变化而变化)。指针
注意2:在你申明一个引用后(b),该引用一直与其表明的变量相联系,不能再做为其它变量的别名(一一对应)。对象
2、学习了引用,下面理解下引入引用的目的:ip
一句话:利用其做为函数的参数,以扩充函数传递数据的功能。(在下一篇文章里详细比较了参数传递的形式)
在这里出现一个我目前很不明白的现象(但愿读者赐教,不胜感激):
从引用的概念上说是指向对象实际位置的指针;可是在JavaScript里出现了(在C++语言未出现,而且明文规定不能够创建引用的数组)缘由(我的):数组名只表明数组的首地址,自己不是一个占有存储空间的变量
例如:
///创建一个数组的对象
Var items new { items1, items 2, items 3};
Var itemRef = items;//数组对象的引用
//将一个元素添加到数组中
Items.push(“items4”);