js函數介紹及構造,arguments和return用法,函數作用域,函數參數

定義

函數是由事件驅動或者當被調用時可重複執行的代碼塊
好處:減少代碼冗餘 增加靈活性 便於維護 提高可擴展性

定義函數三種方式:

1)函數聲明

function name(){//具體的語句}

2)函數表達式:

var functionName = function(){//具體的語句}

3)藉助內置一個方法(Function),構造函數方式

var functionName = new Function();

形參和實參的區別

形參:當定義一個函數時,在小括號裏寫的變量
實參:在調用一個函數是,寫在括號裏的值或變量

形參和實參是一一對應的,形參比實參多,多餘的形參默認會取到underfined,實參比形參多,多餘的實參無效。

js引擎在執行js代碼時的兩步操作

1、先掃描環境中所有的聲明(變量聲明,函數聲明),將這些聲明提升到對應環境的最頂端
2、具體的代碼執行,在對應的地方進行執行

            foo(); //報錯  foo is not a function  , is undefined 
			var foo = function(){ //提升 提升的是函數名
				console.log("a");
			}

arguments

arguments:在函數內使用,表示傳給該函數的所有的實參的集合
用處://在無法確認形參的個數,有需要傳遞實參時,

function foo(){
	console.log(arguments);
	console.log(arguments[0]);//取到第一個實參
	console.log(arguments[3]);//取到第4個實參
	console.log(arguments.length);//實參的個數
	console.log(arguments[arguments.length-1]);//去最後一個數
}

return

1.結束函數執行 2。函數的返回值 函數運行之後的結果

//如果一個函數沒有return或者return後面沒有具體的值,則函數的返回值爲undefined

函數作用域

作用域:變量或者函數能夠被訪問到的範圍

全局作用域

1)最外層函數外通過var來聲明的變量或者聲明的函數具有全局作用域
2)在函數內不通過var來定義的變量
3)window對象的屬性和方法具有全局作用域
//當環境中未定義,而直接可以使用的一些變量或者函數

局部作用域
1)在函數內部通過var來聲明的變量
2)函數的形參具有局部作用域,局部變量
//ES5中,函數是區分全局和局部唯一的代碼塊

函數參數

參數選擇順序:
選擇參數時,就近原則,如果有局部,先局部,後全局,最後window,報錯

函數內部有聲明 提升
eg:

                var a = 10;
				function foo(){
					console.log(a); //在函數內部有聲明提升相當於函數開頭有了個var a;
					var a = 20;
				}
				foo();
				console.log(a);//兩個值是:underfined 10
           // 形參相當於在函數內部聲明瞭var a

事件處理函數

txt.oninput = function(){console.log(txt.value);}//oninput  
txt.onchange = function(){console.log(txt.value);}//onchange

構造函數

一個普通函數,當它和new運算符一起使用時,該函數稱爲構造函數,通常會將構造函數的首字母大寫。

//對象類型
var obj = {};//是一個對象,但是這個對象沒有屬性和方法
//如果來取到屬性值,如果來調用方法   對象名.屬性名   對象名.方法名()
//如果一個對象沒有某個屬性或者方法,那麼取值時會得到underfined 
//添加屬性  如果對象裏已經有某個屬性,會覆蓋

//刪除  delete person.sexy;

遞歸函數

在一個函數內部調用自身,稱該函數爲遞歸函數

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