那么,值類型和引用類型有什么區別呢?最主要的一個,就是當變量類型為值類型時,變量存儲的就是變量值本身,而當變量類型為引用類型時,變量存儲的并不是變量值,而只是一個指向變量值的指針,訪問引用類型的變量值時,首先是取到這個指針,然后是根據這個指針去獲取變量值。如果將一個引用類型的變量值賦給另一個變量,最終結果是這兩個變量同時指向了一個變量值,修改其中一個會同時修改到另一個: 代碼如下: var a = { name:'linjisong', age:29 }; var b = a;//將引用類型的變量a賦給變量b,a、b同時指向了a開始指向的那個對象 b.name = 'oulinhai';//修改b指向的對象,也就是修改了a指向的對象 console.info(a.name);//oulinhai b = {//將變量重新賦值,但是b原來指向的對象沒有變更,也就是a指向的對象沒有變化 name:'hujinxing', age:23 }; console.info(a.name);//oulinhai
(2)函數名是指向函數對象的引用類型變量 代碼如下: function fn(p){ console.info(p); } console.info(fn);//fn(p),可以將fn作為一般變量來訪問 var b = fn; b('function');//function,可以對b使用函數調用,說明b指向的對象(也就是原來fn指向的對象)是一個函數