基本類型、引用類型的復制、傳遞參數
阿新 • • 發佈:2017-12-04
操作 引用傳遞 基本類型 不能 基本類 one 結束 span 傳遞 。復制操作結束後,兩個變量實際上將引用同一個對象。因此,改變其中一個變量,就會影響另一個變量。
基本類型:指的是簡單的數據段。基本數據類型是按值訪問的,因為可以操作保存在變量中的實際值。
- 引用類型:指那些由多個值構成的對象。引用類型的值是保存在內存中的對象。JavaScript不允許訪問內存中的位置,也就是說不能直接操作對象的內存空間。在操作對象時,實際上是在操作對象的引用而不是實際的對象,為此,引用類型的值是按引用訪問的。
復制變量值
1、基本類型的復制
從一個變量向另一個變量復制基本類型的值,會在變量對象上創建一個新值,然後把該值復制到新變量分配的位置上。在此之後的任何操作,兩個值之間互不影響。
2、引用類型的復制
當從一個變量向另一個變量復制引用類型的值時,同樣也會在變量對象中的值復制一份到為新變量分配的空間中。不同的是,這個值的副本實際上是一個指針,而這個指針指向存儲在堆中的一個對象
傳遞參數
ECMAScript中所有函數的參數都是按值傳遞的。也就是說,把函數外部的值復制給函數內部的參數,就和把值從一個變量復制到另一個變量一樣。基本類型值的傳遞同基本類型變量的復制一樣,而引用類型值的傳遞,則如同引用類型變量的復制一樣。
在向參數傳遞基本類型的值時被傳遞的值會被復制給一個局部變量(即命名參數,或者用ECMAScript的概念來說,就是arguments對象中的一個元素)。在向參數傳遞引用類型的值時,會把這個值在內存中的地址復制給一個局部變量,因此這個局部變量的變化會反映在函數的外部。
按值傳遞、按引用傳遞、按共享傳遞 (之間的區別見此文)
檢測類型
- typeof操作符:確定一個變量是不是基本類型的最佳工具。如果變量的值是一個對象或null,則typeof操作符將返回“object”。
- instanceof操作符:確定變量是什麽類型的對象。
基本類型、引用類型的復制、傳遞參數