天天看點

JavaScript---函數

函數其實就是封裝,把可以重複使用的代碼放到函數中,如果需要多次使用同一段代碼,就可以把封裝成一個函數。這樣的話,在你需要再次寫這些代碼的時候,你隻需要調用一次函數就行了。

1.定函數的方式

使用字面量的形式定義函數

ECMAScript

中的函數使用

function

關鍵字來聲明,後面跟

一組參數

函數體

函數的基本文法如下:

function sum(num1, num2) {

		var num3 = num1 + num2;
		return num3;

}

           

這個函數的作用是把兩個值加起來傳回一個結果。函數必須通過調用才會執行,調用這個函數的代碼如下:

2. 使用函數表達式聲明函數

使用Function構造函數聲明函數

函數的傳回值

下面這個函數在執行完

return

語句之後停止并立即退出。是以,位于

return

語句後面的

任何代碼永遠都不會執行

。例如:

function sum(num1, num2) {

		var num3 = num1 + num2;
		return num3;

      alert("hello world");  //永遠不會執行

}
           

一個函數中可以有多個

return

語句,如下面的這個例子所示:

function max(num1, num2) {
	**加粗樣式**  if(num1 > num2){
		return num1;
      }else{
		return num2;
      }
}
           

max()

方法的作用是求

兩個數中最大值

的。如果

第一個數比第二個數大

,傳回

第一個數

;否則

傳回第二個數

。代碼中的兩個分支都具有自己的

return

語句,分别用于傳回最大值。

另外,return語句也可以不帶任何傳回值。在這種情況下,函數在停止執行後将傳回undefined。這種方法一般用在需要提前停止函數執行而又不需要傳回值的情況。

function max(num1, num2) {

			if(!(num1 && num2)){  //參數隻要有一個為空,函數就什麼也不做,直接傳回

				return;

			}else if(num1 > num2){

				return num1;

		    }else{

				return num2;

		    }

		}
           

函數的參數

ECMAScript

函數不介意傳遞進來多少參數,也不在乎傳進來的參數是什麼資料類型。也就是說,

即便你定義的函數隻接收2個參數,在調用這個函數的時候也未必一定要傳遞2個參數。可以傳遞1個、3個甚至不傳遞參數,而解析器永遠不會有什麼怨言

實際上,傳遞給函數的所有參數都被儲存到了

arguments對象

中,

arguments對象

位于

函數體内

,與數組有點類似(但它并不是Array的執行個體),

參數都被儲存到了這個數組中

有的人可能會問了,既然所有傳遞進來的參數都被儲存到arguments數組中了,那麼在聲明函數的時候還聲明參數幹什麼?

其實聲明形參隻是為了友善在函數體中引用傳遞進來的實參,但這不是必需的,在聲明函數時也可以不聲明形參。

函數聲明提升

console.log(abc)
var abc=[1,2,3]
///會列印出undefined
           

函數的作用域

變量的作用域範圍可分為

全局變量

局部變量

全局變量:

在最外層聲明的變量

叫全局變量

在函數體内部

,沒有使用

var

關鍵字聲明的變量也是

全局變量

局部變量:

在函數體内部,使用

var

關鍵字聲明的變量叫作

局部變量

自執行函數

先前咱們寫的函數隻有在調動的時候才會執行,如果像下面這樣寫的話,代碼執行到這一行的時候,函數會自己執行(或者說自己調用自己)。

(function sum(a){

        		console.log(a);

})("abc")

           

繼續閱讀