1. 程式人生 > 其它 >JS-02-JS變數與函式

JS-02-JS變數與函式

JS-02-JS變數與函式

1.JS識別符號命名規則與規範

JS識別符號的命名規則和規範按java的方式就可以了。

識別符號命名規則:

  1. 由字母、數字、下劃線(_)、美元符號($)組成。
  2. 不能由數字開頭。
  3. 嚴格區分大小寫。
  4. 不可使用關鍵字命名。
  5. 理論上長度不限。

識別符號命名規範:

  1. 按照駝峰命名法:
    • 類名和介面名首字母大寫,後面每一個單詞的首字母也大寫。
    • 方法名和變數名首字母小寫,後面每一個單詞的首字母大寫。
  2. 常量所有字母都要大寫,且單詞與單詞之間用下劃線銜接。
  3. 命名要儘量用英語單詞寫,見名知意。

2.JS的變數

2.1怎麼宣告變數?

var 變數名;

2.2如何賦值?

變數名 = 值;

2.3JS變數可以隨意賦值

javascript是一種弱型別程式語言,沒有編譯階段,一個變數可以隨意賦值,賦什麼型別的值都可以。

var i = 10;
i = 3.14;
i = true;
i = 'a';
i = "abc";
i = new Object();

2.4變數預設值為undefined

在JS中,當一個變數沒有手動賦值的時候,系統預設賦值undefined

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>變數</title>
	</head>
	<body>
		<script type="text/javascript">
			var j;
			// undefined在JS中是一個具體存在的值
			alert("j =" + j);
		</script>
	</body>
</html>

2.5訪問沒有宣告的變數

如果一個變數沒有宣告就直接訪問,會報語法錯誤。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>變數</title>
	</head>
	<body>
		<script type="text/javascript">
			 var j;
			// 預設賦值undefined
			alert("j =" + j); 
			//訪問未宣告的變數k
			alert(k)
		</script>
	</body>
</html>

開啟頁面,點選F12,檢視控制檯,可見,當訪問未宣告的變數時會報錯:

k is not defined

2.6演示給同一個變數設定不同的值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>變數</title>
	</head>
	<body>
		<script type="text/javascript">
			var a,b,c = 100;
			alert("a = " + a);
			alert("b = " + b);
			alert("c = " + c);
			
			a = false;
			alert(a);
			a = "abc";
			alert(a);
			a = 3.14;
			alert(a);
		</script>
	</body>
</html>

3.JS的函式

3.1JS函式有什麼用?

JS中的函式等同與java中的方法,函式也是一段可以被重複利用的程式碼片段。

函式一般可以完成某個特定功能。

3.2回顧java方法

格式:

[修飾符列表] 返回值型別 方法名(形式引數列表) {
    方法體;
}

例如:

public static boolean doSome(String name,int age) {
    ...
    return false;
}
public static void main(String[] args) {
    boolean isflag = doSome("張三",25);
}

3.3JS函式的定義和呼叫

3.3.1JS函式定義的語法格式

第一種:

function 函式名(形式引數列表) {
    函式體;
}

第二種:

函式名 = function(形式引數列表) {
    函式體;
}

JS中的函式不需要指定返回值型別,返回什麼型別都可以。

3.3.2定義JS函式並呼叫

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函式</title>
	</head>
	<body>
		<script type="text/javascript">
			// 第一種方式
            //a和b都是區域性變數,都是形參
			function sum(a,b) {
				alert("a + b =" + (a + b));
			}
            //函式必須呼叫才會執行
            //呼叫sum函式
			sum(10,20);
            
			// 第二種方式
			show = function(name) {
				alert("Hello " + name);
			}
            //呼叫show函式
			show("Tom");
		</script>
	</body>
</html>

3.3.3將JS函式的呼叫放到事件控制代碼裡

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函式</title>
	</head>
	<body>
		<script type="text/javascript">
			// 第一種方式
			function sum(a,b) {
				alert("a + b =" + (a + b));
			}
			// 第二種方式
			show = function(name) {
				alert("Hello " + name);
			}
		</script>
		<!-- 將函式的呼叫放到事件控制代碼裡 -->
		<input type="button" value="10和20的和" onclick="sum(10,20)"/>
		<input type="button" value="Hello" onclick="show('Jerry')"/>
	</body>
</html>

3.4JS函式的靈活性

3.4.1JS函式在呼叫時,引數型別和個數沒有限制

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS函式的靈活性</title>
	</head>
	<body>
		<script type="text/javascript">
			//呼叫函式時,引數不受限制
			function doSome(a,b) {
				return a + b;
			}
			//不傳引數
			var value1 = doSome();//NaN,(Not a Number),表示不是一個數字。
			alert(value1);
			//傳一個字串引數
			var value2 =  doSome("abc + ");//abc + undefined
			alert(value2);
 			//傳一個數字引數
			var value3 = doSome(10);//NaN
			alert(value3);
			//傳兩個數字引數
			var value4 = doSome(10,20);//30
			alert(value4);
			//傳三個數字引數
			var value5 = doSome(10,20,40);//30
			alert(value5);
		</script>
	</body>
</html>

3.4.2在JS函式不能重名

如果兩個函式重名,那麼後面宣告的函式會將前面宣告的同名函式覆蓋。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>在JS函式不能重名</title>
	</head>
	<body>
		<script type="text/javascript">
			//前面的函式
			function doOther(name) {
				alert(name);
			}
            //後面的重名函式
			function doOther() {
				alert("Hello Hello");
			}
            //呼叫函式
			doOther("zhangsan");
		</script>
	</body>
</html>

4.JS的全域性變數和區域性變數

4.1JS中全域性變數和區域性變數的概念

全域性變數:

  • 在函式體外宣告的變數都屬於全域性變數。
  • 全域性變數的生命週期是:
    • 瀏覽器開啟時宣告。
    • 瀏覽器關閉時銷燬。
  • 儘量少用全域性變數,因為全域性變數一直會在瀏覽器的記憶體裡,耗費記憶體空間。
  • 能用區域性變數儘量用區域性變數。

區域性變數:

  • 在函式體中宣告的變數屬於區域性變數。包括函式的形參。
  • 區域性變數的生命週期是:
    • 函式開始執行時區域性變數的記憶體開闢。
    • 函式執行結束後,區域性變數的記憶體空間釋放。
  • 區域性變數的生命週期較短。

4.2全域性變數和區域性變數的訪問

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>JS的全域性變數和區域性變數</title>
    </head>
    <body>
        <script type="text/javascript">
            var a = 10;//全域性變數
            function fun1() {
                alert(a);//訪問全域性變數
            }
            fun1();

            var username = "張三";//全域性變數
            function fun2() {
                var username = "李四";//區域性變數
                alert(username)//就近原則,這裡訪問的是區域性變數
            }
            fun2();//函式執行結束後區域性變數的記憶體被釋放
            alert("username = " + username);//這裡呼叫的是全域性變數
        </script>
    </body>
</html>

4.3在函式外面能否訪問區域性變數

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JS的全域性變數和區域性變數</title>
	</head>
	<body>
		<script type="text/javascript">
			function fun3() {
				var num = 50;
				alert(num);
			}
			fun3();//在此處區域性變數已被釋放
			alert(num);//在此處訪問的是一個沒有被定義的變數,語法錯誤。num is not defined
		</script>
	</body>
</html>

4.4當宣告變數時不使用var關鍵字

當一個變數宣告時未使用var關鍵字,那麼無論這個變數在哪宣告的,都會宣告成全域性變數

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>JS的全域性變數和區域性變數</title>
    </head>
    <body>
        <script type="text/javascript">
            function fun4() {
                num2 = 50;
                alert(num2);
            }
            fun4();
            alert(num2);
        </script>
    </body>
</html>