變數 作用域和記憶體問題

2022-07-27 11:12:14 字數 1763 閱讀 1312

1.1 動態的屬性

//引用型別

var person = new object();

person.name = "nicholas";

alert(person.name); //"nicholas"

//基本型別

var name = "nicholas";

name.age = 27;

alert(name.age); //undefined

1.2 複製變數值
//基本型別

var num1 = 5;

var num2 = num1;

num1=3;

alert(num2); //"5"

//引用型別

var obj1 = new object();

var obj2 = obj1;

obj1.name = "nicholas";

alert(obj2.name); //"nicholas"

1.3 傳遞引數
//證明引用型別也是值傳遞

function setname(obj)

var person = new object();

setname(person);

alert(person.name); //"nicholas"

1.4 檢測型別
//檢測基本型別

var s = "nicholas";

var b = true;

var i = 22;

var u;

var n = null;

var o = new object();

alert(typeof s); //string

alert(typeof i); //number

alert(typeof b); //boolean

alert(typeof u); //undefined

alert(typeof n); //object

alert(typeof o); //object

//檢測引用型別

alert(person instanceof object); // 變數 person 是 object 嗎?

alert(colors instanceof array); // 變數 colors 是 array 嗎?

alert(pattern instanceof regexp); // 變數 pattern 是 regexp 嗎?

2.1 延長作用域鏈
當執行流進入下列任何乙個語句時,作用域鏈就會得到加長:

1. try-catch 語句的 catch 塊;

2. with 語句。

function buildurl()

return url;

}

2.2 沒有塊級作用域

2.2.1 宣告變數

2.2.2 查詢識別符號3.1 標記清除

3.2 引用計數

//迴圈引用示例

function problem()

3.3 效能問題

3.4 管理記憶體

function createperson(name)

var globalperson = createperson("nicholas");

// 手工解除 globalperson 的引用

globalperson = null;

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

向引數傳遞基本型別時 把值從乙個變數賦值到另乙個變數 傳遞引用型別時 把這個值在記憶體中的位址賦值給區域性變數 function addten num var count 20 var result addten count console.log count 20,沒有變化 console.log...

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 變數複製是將儲存在變數物件的值複製乙份儲存在新變...