01-JavaScript變量

字面量:數字和字符串

“字面量”即常量,是固定值,不可改變。看見什麼,它就是什麼。

簡單的字面量有2種:數字、字符串。

(1)數值的字面量非常簡單,寫上去就行了,不需要任何的符號。例如:

	alert(886);  //886是數字,所以不需要加引號。

(2)字符串的字面量也很簡單,但一定要加上引號。可以是單詞、句子等。

溫馨提示:100是數字,"100"是字符串。

總結

字面量都可以直接使用,但是我們一般不會直接使用字面量。

如果直接使用字面量的話,非常麻煩。比如說,多個地方要用到同一個字面量,還不如事先定義一個變量,用來保存字面量。

變量更加方便我們使用,所以在開發中都是通過變量去保存一個字面量,而不會直接使用字面量。

變量

變量的概念

變量:變量可以用來保存字面量,而且變量的值可以任意改變。

變量的定義和賦值

在js中使用var關鍵字來聲明一個變量。

變量舉例如下:

	var a = 100;

如下圖所示:

在這裏插入圖片描述

var是英語“variant”變量的縮寫。後面要加一個空格,空格後面的東西就是“變量名”:

  • 定義變量:var就是一個關鍵字,用來定義變量。所謂關鍵字,就是有特殊功能的小詞語。關鍵字後面一定要有空格隔開。

  • 變量的賦值:等號表示賦值,將等號右邊的值,賦給左邊的變量。

  • 變量名:我們可以給變量任意的取名字。

PS:在JavaScript中,永遠都是用var來定義變量(在ES6 之前),這和C、Java等語言不同。

變量要先定義,才能使用。比如,我們不設置變量,直接輸出:

	<script type="text/javascript">
		console.log(a);
	</script>

控制檯將會報錯:

在這裏插入圖片描述

正確寫法:

	var a;   // 定義
	a = 100;  //賦值
	console.log(a);  //輸出100

有經驗的程序員,會把定義和賦值寫在一起:

	var a = 100;    //定義,並且賦值100
	console.log(a);  //輸出100

變量的命名規範

變量名有命名規範:只能由英語字母、數字、下劃線、美元符號$構成,且不能以數字開頭,並且不能是JavaScript保留字。

下列的單詞,叫做保留字,就是說不允許當做變量名,不用記:

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

大寫字母是可以使用的,並且大小寫敏感。也就是說A和a是兩個變量。

	var A = 250;    //變量1
	var a = 888;    //變量2

我們來整理一下變量的命名規則

1.建議用駝峯命名規則:getElementById/matherAndFather/aaaOrBbbAndCcc

2.變量命名必須以字母或是下標符號”_”或者”$”爲開頭。

3.變量名長度不能超過255個字符。

4.變量名中不允許使用空格,首個字不能爲數字。

5.不用使用腳本語言中保留的關鍵字保留字作爲變量名。

6.變量名區分大小寫(javascript是區分大小寫的語言)。

7.漢語可以作爲變量名。但是不建議使用,因爲 low。

標識符

標識符:在JS中所有的可以由我們自主命名的都可以稱之爲標識符。

例如:變量名、函數名、屬性名都是屬於標識符。

標識符的命名規則和變量的命令規則是一樣的。看上面一段就可以了。

重點要注意的是:標識符不能使用腳本語言中保留的關鍵字保留字。如下。

關鍵字

在這裏插入圖片描述

保留字

在這裏插入圖片描述

其他不建議使用的標識符

在這裏插入圖片描述

變量的數據類型

變量裏面能夠存儲數字、字符串等。變量會自動的根據存儲內容的類型不同,來決定自己的類型。

在JS中一共有六種數據類型

  • 基本數據類型(值類型):String 字符串、Number 數值、Boolean 布爾值、Null 空值、Undefined 未定義。

  • 引用數據類型(引用類型):Object 對象。

注意:內置對象function、Array、Date、RegExp、Error等都是屬於Object類型。也就是說,除了那五種基本數據類型之外,其他的,都稱之爲 Object類型。

面試問:引用數據類型有幾種?

面試答:只有一種,即 Object 類型。

數據類型之間最大的區別

  • 基本數據類型:參數賦值的時候,傳數值。

  • 引用數據類型:參數賦值的時候,傳地址(修改的同一片內存空間)。

接下來,我們詳細講一下基本數據類型。

String 字符串

來看個示例。現有如下代碼:

	var a = "abcde";
	var b = "生命壹號";
	var c = "123123";
	var d = "哈哈哈哈哈";
	var e = "";     //空字符串
	console.log(typeof a);
	console.log(typeof b);
	console.log(typeof c);
	console.log(typeof d);
	console.log(typeof e);

控制檯輸出如下:

	string
	string
	string
	string
	string

注意事項:

(1)在JS中,字符串需要使用引號引起來。使用雙引號或單引號都可以,但是不要混着用。比如下面這樣寫是不可以的:

	var str = `hello";

(2)引號不能嵌套:雙引號裏不能再放雙引號,單引號裏不能再放單引號。但是單引號裏可以嵌套雙引號。

(3)轉義字符:在字符串中我們可以使用\作爲轉義字符,當表示一些特殊符號時可以使用\進行轉義。

  • \" 表示 "

  • \' 表示 '

  • \n 表示換行

  • \r 表示回車

  • \t 表示製表符

  • \b 表示空格

  • \\ 表示\

舉例:

    var str1 = "我說:\"今天\t天氣真不錯!\"";
    var str2 = "\\\\\\";
    console.log(str1);
    console.log(str2);

上方代碼的打印結果:

	我說:"今天	天氣真不錯!"
	\\\

將其他數值轉換爲字符串有三種方式:

  • 拼串

  • toString()

  • String()

補充知識:typeof 運算符

typeof()表示“獲取變量的類型”,返回的是小寫,語法爲:

typeof 變量

返回結果

  • typeof 數值的返回結果:number

  • typeof 字符串的返回結果:string

  • typeof 布爾型的返回結果:boolean

  • typeof undefined的返回結果:undefined

  • typeof null的返回結果:object

在JavaScript中,只要是數,就是 number 數值型的。無論整浮、浮點數(即小數)、無論大小、無論正負,都是number 類型的。

數值型:Number

在JS中所有的數值都是Number類型,包括整數和浮點數(小數)。

	var a = 100;	//定義了一個變量a,並且賦值100
	console.log(typeof a);	//輸出a變量的類型

上方代碼的輸出結果爲:number

數值範圍:

由於內存的限制,ECMAScript 並不能保存世界上所有的數值。

  • 最大值:Number.MAX_VALUE,這個值爲: 1.7976931348623157e+308

  • 最小值:Number.MIN_VALUE,這個值爲: 5e-324

如果使用Number表示的變量超過了最大值,則會返回Infinity。

  • 無窮大(正無窮):Infinity

  • 無窮小(負無窮):-Infinity

注意:typeof Infinity的返回結果是number

NaN和isNaN()函數:

(1)NaN:是一個特殊的數字,表示Not a Number,非數值。比如:

    console.log("abc" / 18);  //結果是NaN
    console.log("abc" * "abcd"); //按理說,字符串相乘是沒有結果的,但如果你非要讓JS去算,它就一定會給你一個結果。結果是NaN

注意:typeof NaN的返回結果是number

Undefined和任何數值計算的結果爲NaN。NaN 與任何值都不相等,包括 NaN 本身。

(2)isNaN() :任何不能被轉換爲數值的值,都會讓這個函數返回 true。

	isNaN(NaN);// true
	isNaN("blue"); // true
	isNaN(123); // false

浮點數的運算

在JS中,整數的運算基本可以保證精確;但是小數的運算,可能會得到一個不精確的結果。所以,千萬不要使用JS進行對精確度要求比較高的運算。

如下:

    var a = 0.1 + 0.2;
    console.log(a);  //打印結果:0.30000000000000004

上方代碼中,打印結果並不是0.3,而是0.30000000000000004。

我們知道,所有的運算都要轉換成二進制去計算,然而,二進制是無法精確表示1/10的。因此存在小數的計算不精確的問題。

連字符和加號的區別

鍵盤上的+可能是連字符,也可能是數字的加號。如下:

	console.log("我" + "愛" + "你");	//連字符,把三個獨立的漢字,連接在一起了
	console.log("我+愛+你");			//原樣輸出
	console.log(1+2+3);				//輸出6

輸出:

我愛你
我+愛+你
6

總結:如果加號兩邊都是數值,此時是加。否則,就是連字符(用來連接字符串)。

舉例1:

	var a = "1";
	var b = 2;
	console.log(a + b);

控制檯輸出:12

舉例2:

	var a = 1;
	var b = 2;
	console.log("a" + b);	//"a"就不是變量了!所以就是"a"+2 輸出a2

控制檯輸出:a2

於是我們明白了,在變量中加入字符串進行拼接,可以被同化爲字符串。【重要】

隱式轉換

我們知道,"2"+1得到的結果其實是字符串,但是"2"-1得到的結果卻是數值1,這是因爲計算機自動幫我們進行了“隱式轉換”。

也就是說,-*/%這幾個符號會自動進行隱式轉換。例如:

	var a = "4" + 3 - 6;
	console.log(a);

輸出結果:37

雖然程序可以對-*/%這幾個符號自動進行“隱式轉換”;但作爲程序員,我們最好自己完成轉換,方便程序的可讀性。

布爾值:Boolean

truefase。主要用來做邏輯判斷。

布爾值直接使用就可以了,千萬不要加上引號。

代碼:

	var a = true;
	console.log(typeof a);

控制檯輸出結果:boolean

null和undefined

null:空值

專門用來表示一個爲空的對象(例如:var a = null)。注意,專門用來表示空對象

  • Null類型的值只有一個,就是null。比如:var a = null

  • 使用 typeof 檢查一個null值時,會返回object

undefined:未定義

聲明了一個變量,但是沒有賦值(例如:var a;),此時它的值就是undefined

  • Undefined類型的值只有一個,就是undefind

  • 使用 typeof 檢查一個undefined時,會返回undefined

nullundefined有最大的相似性。看看null == undefined的結果true也就更加能說明這點。

但是null === undefined的結果false。它們雖然相似,但還是有區別的,其中一個區別是:和數字運算時,10 + null結果爲:1010 + undefined結果爲:NaN

  • 任何數據類型和undefined運算都是NaN;

  • 任何值和null運算,null可看做0運算。

變量值的傳遞(賦值)

語句:

	a = b;

把b的值賦給a,b不變。

將等號右邊的值,賦給左邊的變量;等號右邊的變量,值不變。

來做幾個題目。

舉例1:

						 	//a		b       c
	var a = 1;              //1
	var b = 2;              //1     2
	var c = 3;              //1     2       3
	a = b + c;              //5     2       3
	b = c - a;              //5     -2      3
	c = a * b;              //5     -2      -10
	console.log(a);
	console.log(b);
	console.log(c);

輸出:

	5
	-2
	-10

舉例2:

									//a    b     c
			var a = 1;
			var b = 2;
			var c = 3;              //1     2     3
			a = a + b;              //3     2     3
			b = b + a;              //3     5     3
			c = c + b;              //3     5     8
			console.log(a);  //3
			console.log(b);  //5
			console.log(c);  //8

輸出:

	3
	5
	8

舉例3:

							    //a       b
			var a = "1";
			var b = 2;          //"1"     2
			a = a + b;          //"12"    2
			b = b + a;          //"12"    "212"
			console.log(a);     //輸出12
			console.log(b);     //輸出212

輸出:

	12
	212

舉例4:

							  //a         b
			var a = "1";
			var b = 2;
			a = b + a;       //"21"       2
			b = b + a;       //"21"       "221"
			console.log(a);  //21
			console.log(b)   //221

效果:

	21
	221

舉例5:(這個例子比較特殊,字符串減去數字)

		var a = "3";
		var b = 2;
		console.log(a-b);

效果:(注意,字符串 - 數值 = 數值)

	1
	var b = 2;          //"1"     2
			a = a + b;          //"12"    2
			b = b + a;          //"12"    "212"
			console.log(a);     //輸出12
			console.log(b);     //輸出212

輸出:

	12
	212

舉例4:

							  //a         b
			var a = "1";
			var b = 2;
			a = b + a;       //"21"       2
			b = b + a;       //"21"       "221"
			console.log(a);  //21
			console.log(b)   //221

效果:

	21
	221

舉例5:(這個例子比較特殊,字符串減去數字)

		var a = "3";
		var b = 2;
		console.log(a-b);

效果:(注意,字符串 - 數值 = 數值)

1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章