首頁  >  文章  >  web前端  >  JavaScript 學習筆記之變數及其作用域_基礎知識

JavaScript 學習筆記之變數及其作用域_基礎知識

WBOY
WBOY原創
2016-05-16 16:20:091140瀏覽

一、變數

ECMAscript變數是鬆散型變量,所謂鬆散型變量,就是變數名稱可以保存任何類型的數據,每個變數僅僅是用於保存值的佔位符。

定義:var firstDemo;

二、變數的作用域

2.1基本概念

使用var 定義變數:定義該變數的作用域的局部變量,這種定義變數的方法也被變成明確宣告。

這麼說不理解的話可以看看下面這個簡單粗暴的例子:

複製程式碼 程式碼如下:

test();
function test(){
var firstDemo="hello";//定義局部變數
    alert(firstDemo);//hello
}
 test();
 function test(){
    var firstDemo="hello";//定義局部變數firstDemo           
 }   
 alert(firstDemo);//報錯,firstDemo is not define

由以上兩個例子可以看出,如果在一個函數中使用var 定義一個變量,那麼該變量在函數退出後會被銷毀。

省略var 定義變數:只要呼叫一次定義該變數的函數,全域範圍內都可存取該變數。這種定義變數的方法也被成為隱式宣告

複製程式碼 程式碼如下:

 

tips:明確宣告的變數在預編譯時就已經編譯到呼叫物件中了,(例如var t=1;預編譯時執行var t;解釋時執行t=1;)不同於隱式宣告變數在解釋時才被定義為全域變數。

弄清楚變量的作用域,可以幫助我們思考如何合理聲明變量,這樣既減小了不必要的內存開銷,同時能很大程度上地避免變量重複定義而覆蓋先前定義的變量所造成的麻煩。

2.2作用域分析

複製程式碼 程式碼如下:


輸出結果:0 1 0

複製程式碼 程式碼如下:


輸出結果:

A、0 0 1 0

B、0 undefined 1 0

C、0 報錯i is not defined

各位可以猜測一下結果是哪一個,原因會在留言裡詳解。

以上就是本文的全部內容了,簡單的說任何程式語言中變數的作用域都是一個很關鍵的細節。 JS中變數的作用域相對與JAVA、C這類語言顯得更自由,一個很大的特徵就是JS變數沒有區塊級作用域,函數中的變數在整個函數中都有效。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn