javascript之函數

函數是什麼?

函數指的是一段代碼,這段代碼定義一次能夠調用屢次javascript

函數是javascript中一種特殊的對象,函數也是對象有本身的方法和屬性java

注意:函數不調用就不會執行

函數的語法:(帶參數的函數,不帶參數的函數)

不帶參數的函數:數組

   編寫格式:app

            function      函數名{             函數體(要執行的操做)
                              }函數

帶參數的函數:this

            function (這裏邊寫參數)   {            函數體(要執行的操做)                                       }對象

函數的定義:(函數聲明語句,函數表達式)

      編寫格式:遞歸

函數聲明語句:事件

         function   函數名{      函數體(要執行的操做)
            }ip

函數表達式:

      var   變量名(也等於函數的名字)=function(這裏邊寫參數){         函數體(要執行的操做)
                        }

函數聲明語句和函數表達式的區別?

使用函數聲明語句定義的函數能夠在任何地方調用,使用函數表達式定義的函數,調用只能用在定義的函數以前,調用再函數以前會報錯。

函數的參數問題:

在定義函數時若是有多個參數參數之間要用逗號分隔,在函數定義的參數叫形參,在函數調用的時候的參數叫實參。當實參比形參少的受多餘的形參會是undeFinde,當實參等於形參時會對應賦值,當實參多於形參時多餘的實參會被忽略掉。(函數中會有一個僞數組arguments,這個argumens是保存實參的)

使用函數的返回值:return

若是函數體外面要使用函數的返回值,可使用return。在函數中return以後的代碼再也不執行。若是沒有明確的返回值,而且在某個時間想讓函數中止,可使用return。

編寫格式:

      function      函數名   (這裏邊寫參數){      函數體(要執行的操做)             return   }

函數的特殊用途: (遞歸函數和自執行函數)

遞歸函數:(自身調用自身,有結束條件)

編寫格式:

      function 函數名(這裏邊寫參數)   {
                  if (參數<=1){      return 1
            }else{
      return 參數*函數名(參數-1)   }
      }

自執行函數:(不用調用,本身執行)

編寫格式1:

         function 函數名(參數)   {
               函數體(要執行的操做)
         }

編寫格式2:

(函數 (參數){   函數體(要執行的操做)   })(參數值)

函數的調用(函數的調用有四種方式,先之講做爲函數這一種)

調用方法:函數名(參數值);

函數的做用域:(做用域就是函數與變量可訪問的範圍)

全局做用域:

最外層的函數和最外層函數外面的變量擁有全局做用域

沒有使用var聲明的變量擁有全局做用域(這種方式不建議在程序中使用)

window上的屬性和方法都具備全局做用域

局部做用域:(和全局做用域相反,只在固定的代碼片斷中訪問)

         變量聲明:把變量聲明提早到當前做用域的最上面而後再原來的位置賦值

若是全局變量和局部變量的名字相同那麼優先使用局部變量

函數的封裝:(就是一個提取參數的過程)

把語句放在函數裏邊而後調用這個函數

arguments屬性:

用於存放實參,本質上不是一個數組是一個僞數組有長度

函數中的this :

this在普通函數中指向的是window,this在事件中只想的是發生事件的DOM對象

call方法和apply方法:

call方法和apply方法是函數身上的方法,做用是用來改變函數中this的指向的。二者的區別是傳參數的方式不一樣,在使用call和apply時若是括號裏沒有參數那麼this默認只想window對象

call方法:

使用方法:要改變this指向函數的函數名.call(x,y,z)x是想要讓this指向哪一個函數的函數名,剩下的是要往函數裏傳的參數

apply方法:

使用方法:要改變this指向函數的函數名.apply(x,[q.b.j])x是想要讓this指向哪一個函數的函數名,剩下的是要往函數裏傳的參數只不過是一個數組數組裏邊能夠有多個不過只能有一個數組

構造函數:

  1. 構造函數仍是普通的函數。
  2. 有一條不成文的規定:構造函數的首字母大寫,例如:

    普通函數命名: function abc(){函數體}

    構造函數命名:function Abc(){函數體}

  3. 在函數體內聲明變量時再也不使用var而是使用this,例如:

    普通函數聲明變量: var str=123

    構造函數聲明變量:this.str=123

  4. this指向當前函數的實例對象,再也不是window
  5. 調用構造函數的時候要在前邊加上new。例如:

    普通函數調用:abc()

    構造函數調用:new Abc()

構造函數的返回值:

  1. 沒有設置返回值:返回this
  2. 返回值是基本類型的,五種原始類型
  3. 返回值是數組類型的:數組,對象

返回值若是是基本類型的那麼返回值會被拋棄,若是返回值是引用類型的話,返回值將會被替代被返回出的值替代

相關文章
相關標籤/搜索