向引數傳遞基本型別時:把值從乙個變數賦值到另乙個變數
傳遞引用型別時:把這個值在記憶體中的位址賦值給區域性變數
function
addten
(num)
var count =20;
var result =
addten
(count)
; console.
log(count)
;//20,沒有變化
console.
log(result)
;//30
將count的值傳給區域性變數num,對num進行加10後返回;count值沒有變換
function
setname
(obj)
var person =
newobject()
;setname
(person)
; console.
log(person.name)
;//「nicholas」
將person物件存放的記憶體位址賦值給obj,所以person和obj指向的是相同的物件。
function
setname
(obj)
var person =
newobject()
;//將person指向該對物件1
setname
(person)
; console.
log(person.name)
;//"nicholas"
其中這個在函式內部建立的區域性變數,在函式執行完畢之後會立即被銷毀。
var s =
"nicholas"
;var b =
true
;var i =22;
var obj =
newobject()
;var n =
null
;var u;
console.
log(
typeof s)
;// string
console.
log(
typeof n)
;// object
console.
log(
typeof i)
;// number
console.
log(
typeof obj)
;// object
console.
log(
typeof u)
;// undefined
console.
log(
typeof b)
;// boolean
//typeof檢測函式時,會返回function,正規表示式值根據瀏覽器不同結果為object或者function
with語句接收的是location物件,因此變數物件中就包含了location物件的所有屬性和方法,而這個變數物件被新增到了作用域鏈的前端
;//由於sum在函式執行之後被銷毀,因此會導致錯誤
所有變數(包括基本型別和引用型別)都存在於乙個執行環境(作用域)當中,這個執行環境決定了變數的生命週期:
每次進入乙個新的執行環境,都會建立乙個用於搜尋變數和函式的作用域鏈。
變數的執行環境有助於確定應該在何時釋放記憶體。
js 變數 作用域和記憶體問題
基本型別和引用型別 屬性引用型別可以動態新增屬性,而基本型別不可以 var p new obj p.name huyuping console.log p.name huyuping var a a.name huyuping console.log a,name 出錯複製變數值 會在變數的物件上建...
JS 變數 作用域和記憶體問題
一 基本型別和引用型別的值 1 5中基本型別 undefined,null,string,boolean,number是按值訪問的,可以操作儲存在變數的實際的值。引用型別的值是儲存在記憶體中的物件,操作物件實際上是操作物件的應用而不是直接操作物件 2 變數複製是將儲存在變數物件的值複製乙份儲存在新變...
變數 作用域和記憶體問題
1.1 動態的屬性 引用型別 var person new object person.name nicholas alert person.name nicholas 基本型別 var name nicholas name.age 27 alert name.age undefined1.2 複製...