JS 變數 作用域和記憶體問題

2021-10-09 10:00:46 字數 2120 閱讀 1139

向引數傳遞基本型別時:把值從乙個變數賦值到另乙個變數

傳遞引用型別時:把這個值在記憶體中的位址賦值給區域性變數

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 複製...