# 變量
變量在不同環境中是自動轉換的,沒有限定某種類型
## 變量2種不同類型的值
* 基本類型 ---保存在棧內存中的簡單數據,固定大小,按值訪問
* 引用類型----保存在堆內存中的對象,棧內存中保存對象的地址,通過地址找到堆中的對象,按引用訪問

* * * * *
* 復制對象,只會復制對象在棧中的引用地址,堆內存無法復制
* 基本類型復制,復制的是值本身
*js 函數中所有的參數都是按值傳遞,即使參數是對象,和php不同(&地址符)
判斷object的具體類型
* 基本類型判斷用typeof
* 用instanceof判斷具體是對象,數組,還是正則
`alert(box instanceof Array)`
## 作用域
if,for等沒有封閉作用域的功能,都是window下的
函數里面有封閉作用域
~~~
function box(){
var a=100; //初始化變量必須用var,如果要全局,在函數外面定義
}
~~~
變量的搜索查詢,從近往外搜索
## 內存
js自行管理內存,垃圾回收器會周期性運行
手動回收內存
~~~
var box={}
box=null;//解除引用,等待垃圾回收
~~~