關鍵字function用來定義函數。
注意,function語句里的花括號是必需的,即使函數體只包含一條語句。
在JavaScript中,函數是Function類的具體實例。而且都與其它引用類型一樣具有屬性和方法。
函數名實際上是指向函數對象的指針,函數可以作為參數參與到傳參和返回值中。
函數的對象特性
因為函數是Function的實例,而函數名僅僅是該實例的一個引用地址。因此可以作為參數和返回值參與到函數的傳參過程中。
函數的內部屬性
arguments | this
•arguments對象中保存著傳遞給函數的參數
•arguments.length返回傳入參數的個數
•Note: length屬性表示函數定義時候默認接收的參數數量。arguments.length表示函數實際執行時接收的參數數量。
•arguments.callee()主要用在遞歸函數中調用函數自身的情境中。js和別的語言不同在于函數名只是一個指針,可以隨時變化,函數中利用函數名來調用自身屬于高耦合,可能會出現問題,而arguments.callee()調用自身就會規避掉這個問題
•this主要用來幫助函數引用函數所處作用域中的對象。
call()和apply()
call()和apply()是每個函數都包含的自有方法。之前已經提到了函數是定義的對象,那么調用函數時候,函數中的this是對當前與下變量的調用。而如果想改變函數執行所在域空間,則可以使用call()和apply()來實現。
app()和call()的作用是相同的,區別主要在于傳入參數的不同。
call(this,para1,prar2,prar3) 第一個參數是函數要執行的作用域,后面的參數是函數的輸入參數,有多少個依次寫多少個。
apply(this,[para1,para2,prara3])第一個參數也是函數要執行的作用域,后面是一個Array的數組對象。
使用call()/apply()來擴充作用域最大的好處是對象和方法的解耦。
內置對象
Global對象可以理解成最外層的對象,所有的對象,以及不屬于其它對象的屬性和方法都被包含在Global對象中。
* isNaN(x) 用來檢查參數x是否為數字。如果為數字返回false,否則返回true
* isFinite(x) 用來檢查參數x是否為無窮大/小,如果是無窮大/小,則返回true
* parseInt(x) 用來解析字符串并返回整數
* parseFloat(x) 用來解析字符串并返回浮點數
* encodeURI()和encodeURIComponent()會對字符串進行特殊的UTF-8編碼,規避一些特殊字符來讓瀏覽器能夠讀懂。他倆的區別主要在于encodeURI()不會對本身屬于URI的特殊字符進行編碼,而encodeURIComponent()會對其發現的所有非標準字符進行編碼。
•對應的解碼函數為decodeURI()和decodeURIComponent()
•eval(script) 用來將script的內容在解釋器中執行并返回對應的結果。非常強大!
Note:在瀏覽器中,windows對象封裝了Global對象,并承擔了很多額外的任務和功能。
Math對象為另一個內置對象。為JavaScript提供了數學計算功能。
以上就是本文的全部內容了,希望小伙伴們能夠喜歡,能夠對大家有所幫助。
新聞熱點
疑難解答