4.Javascript變量的定義和賦值


四、變量

變量(Variables),和高中代數學習的xyz很像,它們不是字母,而是蘊含值的符號。

它和直接量不同,直接量5,就是數字5;直接量”你好”就是字符串“你好”。現在這個變量不一樣了,你看見一個a,實際上它不是字母a,而是里面蘊含的不同的值。

4.1 整體感知

1  <script type="text/javascript">

//定義一個變量

3  var a;

//賦值

5  a = 100;

//輸出變量a

7  console.log(a);

8  </script>

 

我們使用var關鍵字來定義變量所謂的關鍵字就是一些有特殊功能的小詞語,關鍵字后面要有空格

var就是英語variables變量的縮寫,表示定義一個變量。一旦你

1 var a;

你的電腦內存中,就會開辟一個空間,來存儲這個變量a

現在就可以給這個變量賦值,JS中給變量賦值用等號,等號右邊的值賦給左邊

1 a = 100;

現在a變量的值就是100。所以我們輸出

1 console.log(a);

4.2 變量必須先聲明,才能使用

使用一個變量,必須先進行一個var,才能使用。var這個過程可以叫做聲明declaration,也可以叫做定義definition

現在我們直接運行語句:

1 console.log(b);   //這個b沒有被var過,所以要報錯

 

因為b沒有被定義,所以b現在不是一個變量,系統不認識這個b的。拋出引用錯誤。

 

變量的名稱是標識符identifiers任何標識符的命名都需要遵守一定的規則

JavaScript語言中,一個標識符(identifier)可以由字母、下划線(_)、美元($)符號、數字(0-9組成,但不能以數字開頭。也就是說,一個標識符必須由字母、下划線、美元符號開頭,后續可以有字母、下划線、美元符號、數字。因為JavaScript語言是區分大小寫的,所以Aa不是同一個變量。並且不能是JavaScript保留字、關鍵字

保留字,是系統里面的有用途的字,為了不造成誤會,不能成為標識符的名字。

保留字,不用背:

abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float
goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile

 

合法變量名的舉例:

1  // 以下都是合法的變量名

2  var a;

3  var A;

4  var b333;

5  var _abc;

6  var $;

7  var $o0_0o$;

8  var ________;

9  var _;

非法的:

1  var 123a;   //不能數字開頭

2  var 12_a;    //不能數字開頭

3  var abc@163;    //不能有特殊符號,符號只能有_$

4  var abc;    //不能有特殊符號,符號只能有_$

5  var var;     //不能是關鍵字

6         var class;   //不能是保留字

變量的名字的長度實際上每個瀏覽器的規范不同,不用在意。

4.3 變量的賦值

變量的賦值用等號,等號就是賦值符號,在JS中等號沒有其他的含義,等號就表示賦值。

 

1 var a; //定義

2 a = 100; //初值

3 console.log(a);

運行結果:

 

 

可以定義和賦初值一起寫:

var a = 100;  

2 console.log(a);

運行結果:

 

 

等號右邊的值給左邊,等號右邊的值不變。

1 var a = 100;

2 var b = 200;

3 a = b; //在改變a變量的值,a的值變為200b的值不變。

4 console.log(a);

5 console.log(b);

運行結果:

 

你會發現,變量只需要var一次,后面改變變量的值的時候,就不需要var了,可以直接改變它的值。

1 var a = 100;

2 a = 50;   //不需要寫var

3 console.log(a);

 

如果一個變量,僅僅被var了,但是沒有被賦初值呢,此時這個變量的值就是undefined;

1 var m;

2 console.log(m);  //輸出undefined

運行結果:

 

 

實際上我們已經var了這個m,已經定義了這個m,只不過這就是瀏覽器的一個規矩,如果這個變量沒有被賦初值,那么這個變量就視為沒有“定義完成”。值就是undefined

 

4.4 變量聲明的提升

 

這是js特有的一個特點,其他語言都沒有這個特點。有些程序員挺反感這個特點的。

 

我們現在先去改變變量的值,然后定義變量,由於JS有一個機制,叫做變量聲明的提升,所以現在程序在執行前會已經看見這個程序中有一行定義變量,所以就會提升到程序開頭去運行。

 

1  <script type="text/javascript">

2  a = 100;

3  var a;  //這行定義變量會自動提升到所有語句之前

4  console.log(a);

5  </script>

 

 

 

 

 

記住,js只能提升變量的聲明,而不能提升變量的賦初值

1 console.log(a);

2 var a = 100;

 

等價於:

1 var a;   //自動升級

2 console.log(a);

3 a = 100;   //賦初值還留在原地

 

4.5 不寫var的情況

1 abc = 123;

2 console.log(abc);

 

 

定義abc的時候沒有寫var,程序沒有報錯,說明這個abc變量真的已經被定義成功了。現在你看不出來var和不var的區別,感覺都是成功的,但是日后你就會知道不寫var定義了一個全局變量,作用域是不能控制的

 

4.6 用逗號來隔開多個變量的定義

1 var a = 7 , b = 9 , c = 10;

逗號這個表示法,只能用於變量的連續定義,不要瞎用。

4.7 區分變量還是直接量

變量的時候,不能加引號。如果變量加上引號,就變成字符串了。

1 var a = 100;

2 console.log("a");

 

而不是輸出100,

引號是“字符串”的定界符,所以在雙引號里面的a已經失去了變量的意思,就是一個字符串a

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM