javascript包含兩種不同的數據類型的值,分別是基本類型值 和引用類型值
基本類型,分別是:字符串(String)、數字(Number)、布爾(Boolean)、空(Null)、未定義(Undefined)
五種基本數據類型時按值訪問的,可以直接操作變量的內容,如果從一個基本類型變量向另外一個變量賦值,會創建該變量的副本,兩者之間不會影響。
eg:
此處用的是node的js環境,可見修改A以後並不會影響B,可知AB爲互相獨立的存儲空間
而引用類型則並非如此,常見的引用類型有Array,Object。纔將一個引用類型賦值給一個變量時,該變量實際保存的是指向引用類型內存的指針。如果從一個引用類型變量向另外一個變量賦值,則兩個變量指向於同一個內存地址
eg:
此處用的數組直接量的形式,修改b後,a也被修改了,可見ab指向的同一個內存地址
那麼在傳遞參數的時候又是怎樣呢?
基本數據類型毫無疑問會複製一個副本,並把該副本的值賦給參數,那麼引用類型呢?看測試如下:
有圖可以知道,當把引用類型b傳入函數中,並修改a時,相應的b也被修改了,可見在傳遞引用類型的參數時,傳遞的是該變量的指針。