第 4 章 變量、作用域和內存問題
4.1 基本類型和引用類型的值
4.1.1 動態的屬性
定義基本類型值和引用類型值的方式是類似的:創建一個變量併爲該變量賦值。
var person = new Object();
person.name = "Nicholas";
alert(person.name); //"Nicholas"
但是,我們不能給基本類型的值添加屬性,儘管這樣做不會導致任何錯誤。比如:
var name = "Nicholas";
name.age = 27;
alert(name.age); //undefined
爲字符串 name 定義了一個名爲 age 的屬性,爲該屬性賦值 27。但在下一
行訪問這個屬性時,發現該屬性不見了。這說明只能給引用類型值動態地添加屬性,以便將來使用。
4.1.2 複製變量值
從一個變量向另一個變量複製基本類型的值,會在變量對象上創建一個新值,然後把該值複製到爲新變量分配的位置上。
var num1 = 5;
var num2 = num1;
4.1.3 傳遞參數
在向參數傳遞基本類型的值時,被傳遞的值會被複制給一個局部變量(即命名參數,或者用ECMAScript 的概念來說,就是 arguments 對象中的一個元素)。
function addTen(num) {
num += 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20,沒有變化
alert(result); //30
4.1.4 檢測類型