第四章 變量,做用域和內存問題函數
1.變量指針
可保存兩種類型的值:基本類型值和引用類型值。對象
基本類型值源於五種基本數據類型。內存
基本類型值和引用類型值的對比:作用域
1).基本類型值在內存中佔據固定大小的空間,所以被保存在棧內存中it
2).從一個變量向另外一個變量賦值基本類型的值,會建立這個值的一個副本變量
3).引用類型的值是對象,保存在堆內存中擴展
4).包含引用類型值的變量實際包含的不是對象自己,而是一個指向該對象的指針搜索
5).從一個變量想另外一個變量賦值引用類型的值,複製的實際上是指針,所以兩個變量最終都指向同一個對象數據類型
6).肯定一個值是哪一種基本類型能夠使用typeof操做符,而肯定一個值是哪一種引用類型能夠使用instanceof操做符
2.傳遞參數
訪問變量有按值和按引用兩種方式,而參數只能是按值傳遞的。
3.執行環境和做用域
1.)執行環境有全局執行環境和函數執行環境之分
2.)每次進入一個新執行環境,都會建立一個用於搜索變量和函數的做用域鏈
3.)函數的局部環境不只有權訪問函數做用域中的變量,並且有全訪問其包含環境,乃至全局環境
4.)全局環境只能訪問全局環境中定義的變量和函數,而不能直接訪問局部環境中的任何數據
5.)變量的執行環境有助於肯定應該合適釋放內存
做用域鏈:因爲js的變量都是對象的屬性,而該對象可能又是其它對象的屬性,而全部的對象都是window對象的屬性,因此這些對象的關係能夠看做是一條鏈
鏈頭就是變量所處的對象,鏈尾就是window對象
with語句主要用來臨時擴展做用域鏈,將語句中的對象添加到做用域的頭部
4.垃圾收集
1.)離開做用域的值將被自動標記爲能夠回收,所以將在垃圾收集期間被刪除
2.)最主流:"標記清除"