1. 程式人生 > 其它 >JavaScript自定義函式(函式的定義、函式的呼叫、函式的引數、函式的返回值、匿名函式、變數的作用域)

JavaScript自定義函式(函式的定義、函式的呼叫、函式的引數、函式的返回值、匿名函式、變數的作用域)

JavaScript自定義函式

函式的定義:
定義函式和其他的普通JavaScript的程式碼相同,都需要放在標籤對中,但同時要使用關鍵字function。
function(形參1, ……, 形參n){
語句塊;
}
函式定義的規則:
(1)使用function關鍵字。function後直接是函式名。
(2)函式的命名規則與變數的命名規則相同。
(3)函式名後的形參可以是無限個,也可以不設定形參。
(4){}中是執行的程式碼語句塊。

//自定義計算矩形的面積的函式
<body>
	<script type="text/javascript">
		function
Area(width, height){ var area = width * height; document.write(area); } </script> </body>

函式的呼叫:
函式是不會自動執行的,需要在適當的時候呼叫適當的函式。函式的呼叫也需要放在標籤對中。

//自定義計算矩形的面積的函式並呼叫
<body>
	<script type="text/javascript">
		Area(3, 4);
		function Area(width, height){
			var area = width *
height; document.write(area); } </script> </body>

呼叫一個函式的前提是這個函式必須事先要被定義好,如果呼叫一個沒有定義好的函式,則會得到一條錯誤函式。

函式的引數:
對於函式外部的語句來說,函式內部的語句是不可見的,而函式的引數就是溝通兩者之間的橋樑。通過引數,外部的語句可以傳遞不同的資料給函式處理。
引數也是一種變數,但只能被函式內部的語句使用,並且在被呼叫時賦值,常稱為形參。
JavaScript中的引數的生命不需要使用關鍵字var,但引數的命名規則與變數的命名規則相同。

函式中引數的特殊性:
(1)函式聲明瞭引數,在呼叫時也可以不傳遞引數。

(2)無論函式宣告時有多少個引數,在呼叫函式時可以傳遞若干個引數值給函式,且實際傳遞的引數值還可以在函式內部獲得。

在函式被呼叫時,arguments物件被建立。arguments表示的是實際向函式傳入了多少個引數(arguments物件相當於一個數組,而傳遞的引數為元素)。

//計算公司人數及總工資
<body>
	<script type="text/javascript>
		function Total(){
			var sum = 0;//總工資
			var num = arguments.length;//人數
			for(var i = 1; i <= num; i++){
				sum += arguments[i];
			}
			document.write("總人數是:" + num + ",總工資是:" + salary);
		}
	</script>

	<dl>
		<dt><h3>A公司</h3></dt>
		<dd><script type="text/javascript">Total(2000, 4000, 6000)</script></dd>
	</dl>
	<dl>
		<dt><h3>B公司</h3></dt>
		<dd><script type="text/javascript">Total(3000, 6000, 9000, 5000)</script></dd>
	</dl>
</body>

通過arguments中length屬性,可以採用陣列元素的訪問元素的訪問方式訪問arguments物件。

函式的返回值:
函式的返回值能夠將一個函式內部產生的結果通過函式的返回值語句return返回給外部語句使用。

語法結構:
return 返回值;
var result = 函式名(引數);

<body>
	<script type="text/javascript">
		var result = Area(3, 4);
		function Area(width, height){
			var area = width * height;
			return area;
		}
	</script>
</body>

匿名函式:
匿名函式,顧名思義即為沒有名字的函式,又稱為達拉姆函式。
語法結構:
function (引數){

};
呼叫結構:
(function (){ 語句塊; })(引數);

<body>
	<script type="text/javascript">
		//定義匿名函式
		function (width, height){
			//計算矩形面積
		}
	</script>
	
	<h3>寬度為:3,高度為:4的矩形面積為:</h3>
	<script type="text/javascript>
		//呼叫匿名函式
		(function (width, height){ document.write(width * height); })(3, 4);
	</script>
</body>

在JavaScript中,函式也是一種資料型別,稱為Function型別。

<body>
	<script type="text/javascript">
		var result = function (width, height){
			var area = width * height;
			return area;
		}
	</script>
</body>

變數的作用域:
變數的作用域主要分為全域性變數和區域性變數。全域性變數是在函式外部任意地方宣告的,可以在函式內部使用。區域性變數實在函式內部宣告的,只能在函式中使用,且隨著函式的結束而消失。
如果全域性變數和區域性變量出現重名情況,區域性變數優先使用,即無論全域性變數怎麼改變,函式內部的變數永不會受到影響 。

<script type="text/javascript">
	var width = 10;
	document.write(width);
	var result = function Wid(width){
		var tem = 20;
		width = tem;
		return width;
	}
	document.write(result);
</script>