參數
JS中的參數傳值都是按值來傳遞,無論是基本類型還是引用類型的變量。
如果是基本類型的參數,則值會複製一份給命名參數/arguments對象。
如果是引用類型的值則會把該值在內存中的地址複製一份給參數/arguments對象,此時該局部變量(函數的參數實際上是一個局部變量)的變化會反應在函數外部,因爲操作的是同一個對象。
變量類型檢測
使用typeof
操作符可以檢測出基本類型,除了null
會返回object
。
此外,檢測方法會返回function
,除此以外的引用類型都是返回object
。
基本類型的數據其大小是固定的,保存在粘中;引用類型的數據保存在堆中。
作用域
所有的變量都存在於一個執行環境(作用域)中。每當進入一個新的執行環境,都會創建一個作用域鏈。作用域鏈保存了變量對象(保存了可訪問的屬性和方法)的引用,保證了標識符的有序搜索。
全局變量在使用完畢後最好進行引用解除,即obj = null
。以便垃圾收集器在下次運行的時候回收內存。
訪問一個未聲明的變量會報錯:ReferenceError: num is not defined。而訪問對象不存在的屬性返回的是undefined
。
通常對必填參數使用命名參數形式,而對可選參數使用對象字面量來封裝。