一、函數是用來幫助我們封裝、調用代碼的最方便的工具!
二、函數的創建方法有三種:
三、函數的創建方式有3種,調用方式也不是單一的,調用方式有4種!
1、作為一個函數去調用 函數名+();(函數作為全局對象調用,會使this的值成為全局對象,使用window對象作為一個變量,容易造成程序崩潰!)
2、函數作為方法調用:(函數作為對象的方法調用,會使this的值成為對象的本身!)
我們舉例說明:
3、使用構造函數調用函數:(構造函數中的this沒有任何值)
4、作為函數方法調用函數:(這種可以設置this的值,我可以返回不同this!)
在js中函數是對象,是對象就有屬性個方法,而call()和apply()是預定義的函數方法!
這兩個方法都可以調用函數,兩個方法的第一個參數必須是對象的本身!
三、如果想要對函數有更深刻的理解,或者正確認識函數!需要我們先做一件事,那就是了解js的運行機制問題:
1、在js中js引擎會優先解析var變量和function定義!在預解析完成后從上到下逐步進行!
2、解析var變量時,會把值存儲在“執行環境”中,而不會去賦值,值是存儲作用!例如:
alert(a); var a = 5; 這時會輸出undifiend,意思是沒有被初始化沒有被賦值!
這並不是沒有被定義,錯誤了的意思!
3、在解析function時會把函數整體定義,這也就解釋了為什么在function定義函數時為什么可以先調用后聲明了!其實表面上看是先調用了,其實在內部機制中第一步實行的是把以function方式定義的函數先聲明了!
四、javascrit中函數有一個內置的對象arguments對象!
作用是:1.在js中函數定義沒有任何參數,調用該函數時可以傳遞任意參數!2.arguments對象是數組對象。3.arguments對象的length屬性:獲取函數的實參個數!4.利用Arguments對象特性,實現模擬函數的重載的效果.