JavaScript中變數和作用域
JavaScript的變數與其他語言的變數有很大區別。 JavaScript 變數不 是 強制型別 的 ,決定了它只是在特定時間用於儲存特定值的一個名字而已。由於不存在定義某個變數必須要儲存何種資料型別值的規則,變數的值及其資料型別可以在指令碼的生命週期內改變。
變數及作用域
1. 基本型別和引用型別的值
常見的 兩種不同資料型別的值:基本型別值和引用型別值。基本型別值指的是那些儲存在棧記憶體中的簡單資料段,即這種值完全儲存在記憶體中的一個位置。而引用型別值則是指那些儲存在堆記憶體中的物件,意思是變數中儲存的實際上只是一個指標,這個指標指向記憶體中的另一個位置,該位置儲存物件。
將一個值賦給變數時,解析器必須確定這個值是基本型別值,還是引用型別值。基本型別值有以下幾種: Undefined 、 Null 、 Boolean 、 Number 和 String 。這些型別在記憶體中分別佔有固定大小的空間,他們的值儲存在棧空間,我們透過按值來訪問的。
如果賦值的是引用型別的值,則必須在堆記憶體中為這個值分配空間。由於這種值的大小不固定,因此不能把它們儲存到棧記憶體中。但記憶體地址大小的固定的,因此可以將記憶體地址儲存在棧記憶體中。這樣,當查詢引用型別的變數時,先從棧中讀取記憶體地址,然後再透過地址找到堆中的值。
定義基本型別值和引用型別值的方式 幾乎一致 的:建立一個變數併為該變數賦值。 不過 ,當這個值儲存到變數中以後,對不同型別值可以執行的操作則大相徑庭。
var test = new Object(); // 建立引用型別
test .name = ' qf '; // 新增 一個屬性
alert( test .name); // 輸出
基本型別的值新增屬性,就會出現問題。
var test = ' qf '; // 建立一個基本型別
test .age = 18 ; // 給基本型別新增屬性
alert( test .age); //undefined
復 制變數值
在變數複製方面,基本型別和引用型別也有所不同。基本型別複製的是值本身,而引用型別複製的是地址。
var test = ' qf ';
var test 2 = test ;
檢測型別
要檢測一個變數的型別,我們可以透過 typeof 運算子來判別 。
var test = ' qf ';
alert(typeof (test) ); //string
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942977/viewspace-2653225/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- 理解 Javascript 中變數的作用域JavaScript變數
- 好程式設計師JavaScript教程分享JavaScript中變數和作用域程式設計師JavaScript變數
- JavaScript之變數及作用域JavaScript變數
- JavaScript變數作用域之殤JavaScript變數
- JavaScript 變數的作用域鏈JavaScript變數
- javascript:變數、作用域和記憶體問題JavaScript變數記憶體
- javascript變數、作用域和記憶體問題......JavaScript變數記憶體
- 現代 JavaScript 的變數作用域JavaScript變數
- java中變數的作用域Java變數
- 軟體測試學習中JavaScript中變數和作用域式是什麼?JavaScript變數
- 變數作用域變數
- js中變數作用域問題JS變數
- 細談sass和less中的變數及其作用域變數
- JS變數作用域JS變數
- SCSS 變數作用域CSS變數
- golang變數作用域Golang變數
- javascript基礎(函式與方法的區別,變數作用域,變數和函式的宣告提前,函式作用域)(十五)JavaScript函式變數
- Go 中的動態作用域變數Go變數
- 注意for迴圈中變數的作用域變數
- JavaScript 變數、作用域及記憶體詳解JavaScript變數記憶體
- Python 函式和變數作用域Python函式變數
- JavaScript中的作用域JavaScript
- JavaScript —— 區域性變數和全域性變數JavaScript變數
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- python變數與變數作用域Python變數
- 深入理解JavaScript作用域和作用域鏈JavaScript
- PL/SQL變數作用域SQL變數
- lisp 變數的作用域Lisp變數
- LoadRunner變數作用域變數
- C# 變數作用域C#變數
- CSS變數的作用域和預設值CSS變數
- 變數、作用域和記憶體問題變數記憶體
- JavaScript全域性作用域下,變數加var和不加var的區別。JavaScript變數
- javascript棄坑之路-搞定執行環境物件、變數訪問和作用域JavaScript物件變數
- JavaScript變數作用域(Variable Scope)和閉包(closure)的基礎知識JavaScript變數
- 理解 JavaScript 中的作用域JavaScript
- javascript作用域和作用域鏈簡單介紹JavaScript