引用(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」);