JS高級程序設計筆記(二):變量、作用域和內存

參數

JS中的參數傳值都是按值來傳遞,無論是基本類型還是引用類型的變量。
如果是基本類型的參數,則值會複製一份給命名參數/arguments對象。
如果是引用類型的值則會把該值在內存中的地址複製一份給參數/arguments對象,此時該局部變量(函數的參數實際上是一個局部變量)的變化會反應在函數外部,因爲操作的是同一個對象。

變量類型檢測

使用typeof操作符可以檢測出基本類型,除了null 會返回object
此外,檢測方法會返回function,除此以外的引用類型都是返回object
基本類型的數據其大小是固定的,保存在粘中;引用類型的數據保存在堆中。

作用域

所有的變量都存在於一個執行環境(作用域)中。每當進入一個新的執行環境,都會創建一個作用域鏈。作用域鏈保存了變量對象(保存了可訪問的屬性和方法)的引用,保證了標識符的有序搜索。
全局變量在使用完畢後最好進行引用解除,即obj = null。以便垃圾收集器在下次運行的時候回收內存。
訪問一個未聲明的變量會報錯:ReferenceError: num is not defined。而訪問對象不存在的屬性返回的是undefined
通常對必填參數使用命名參數形式,而對可選參數使用對象字面量來封裝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章