函數指的是一段代碼,這段代碼定義一次能夠調用屢次javascript
函數是javascript中一種特殊的對象,函數也是對象有本身的方法和屬性java
不帶參數的函數:數組
編寫格式:app
function 函數名{ 函數體(要執行的操做)
}函數
帶參數的函數:this
function (這裏邊寫參數) { 函數體(要執行的操做) }對象
編寫格式:遞歸
函數聲明語句:事件
function 函數名{ 函數體(要執行的操做)
}ip
函數表達式:
var 變量名(也等於函數的名字)=function(這裏邊寫參數){ 函數體(要執行的操做)
}
使用函數聲明語句定義的函數能夠在任何地方調用,使用函數表達式定義的函數,調用只能用在定義的函數以前,調用再函數以前會報錯。
在定義函數時若是有多個參數參數之間要用逗號分隔,在函數定義的參數叫形參,在函數調用的時候的參數叫實參。當實參比形參少的受多餘的形參會是undeFinde,當實參等於形參時會對應賦值,當實參多於形參時多餘的實參會被忽略掉。(函數中會有一個僞數組arguments,這個argumens是保存實參的)
若是函數體外面要使用函數的返回值,可使用return。在函數中return以後的代碼再也不執行。若是沒有明確的返回值,而且在某個時間想讓函數中止,可使用return。
編寫格式:
function 函數名 (這裏邊寫參數){ 函數體(要執行的操做) return }
遞歸函數:(自身調用自身,有結束條件)
編寫格式:
function 函數名(這裏邊寫參數) {
if (參數<=1){ return 1
}else{
return 參數*函數名(參數-1) }
}
自執行函數:(不用調用,本身執行)
編寫格式1:
function 函數名(參數) {
函數體(要執行的操做)
}
編寫格式2:
(函數 (參數){ 函數體(要執行的操做) })(參數值)
調用方法:函數名(參數值);
全局做用域:
最外層的函數和最外層函數外面的變量擁有全局做用域
沒有使用var聲明的變量擁有全局做用域(這種方式不建議在程序中使用)
window上的屬性和方法都具備全局做用域
局部做用域:(和全局做用域相反,只在固定的代碼片斷中訪問)
變量聲明:把變量聲明提早到當前做用域的最上面而後再原來的位置賦值
若是全局變量和局部變量的名字相同那麼優先使用局部變量
把語句放在函數裏邊而後調用這個函數
用於存放實參,本質上不是一個數組是一個僞數組有長度
this在普通函數中指向的是window,this在事件中只想的是發生事件的DOM對象
call方法和apply方法是函數身上的方法,做用是用來改變函數中this的指向的。二者的區別是傳參數的方式不一樣,在使用call和apply時若是括號裏沒有參數那麼this默認只想window對象
使用方法:要改變this指向函數的函數名.call(x,y,z)x是想要讓this指向哪一個函數的函數名,剩下的是要往函數裏傳的參數
使用方法:要改變this指向函數的函數名.apply(x,[q.b.j])x是想要讓this指向哪一個函數的函數名,剩下的是要往函數裏傳的參數只不過是一個數組數組裏邊能夠有多個不過只能有一個數組
普通函數命名: function abc(){函數體}
構造函數命名:function Abc(){函數體}
在函數體內聲明變量時再也不使用var而是使用this,例如:
普通函數聲明變量: var str=123
構造函數聲明變量:this.str=123
調用構造函數的時候要在前邊加上new。例如:
普通函數調用:abc()
構造函數調用:new Abc()
返回值若是是基本類型的那麼返回值會被拋棄,若是返回值是引用類型的話,返回值將會被替代被返回出的值替代