js學習總結----函數

來源:互聯網
上載者:User

標籤:obj   nts   ret   知識   通過   部分   argument   組成   var   

一、函數基本知識

1、function:函數->具備某個功能的一個方法。方法本身是沒有什麼意義的,只有執行這個方法實現了對應的功能才有自己的價值。

2、函數由兩部分組成:建立一個函數、執行這個函數

   function 方法名(){

         //函數體:存放的某個功能實現的JS代碼

   }

   方法名();

  建立一個函數可以執行多次,一般情況下,每次執行函數和上一次執行沒有任何的關係

function sum(){            var total = null;            total = 1 + 1;            console.log(total)        }
     sum// 後面不加小括弧,代表的就是當前函數本身 sum(); //sum後面加小括弧,代表的是執行當前函數 函數執行的目的:把函數之前儲存的那些字串 變成js代碼,
          然後在讓js代碼從上到下的執行。

  建立一個函數的過程:

   1)、首先開闢一個新的記憶體空間,瀏覽器為其分配一個16進位的地址,我們假設地址為:xxxfff000

   2)、把函數體中的JS代碼當做"字串" 儲存到記憶體空間中。

   3)、再把這個地址賦值給當前的函數名 sum->xxxfff000

  函數執行的過程

  1)、函數執行的時候,首先會提供一個供函數體中代碼執行的環境->私人範圍

  2)、把函數體中的代碼字串變為代碼從上到下執行

  注意:函數在執行的時候,首先會形成一個新的私人範圍,供函數體中的代碼從上到下執行,形成的那個私人範圍,把我們函數體中的代碼都包起來了,保護裡面的私人變數,不受外界的幹擾,我們把函數執行的時候形成的這種保護機制叫做"閉包"

二、形參

  擴充:我們想把sum這個方法升級,隨便給我兩個數都能求和 ->形參 

function sum(num1,num2){//num1和num2 就是我們設定的形參“變數” 是當前函數的兩個入口            var total = null;            total = num1 + num2;            console.log(total)        }        sum(100,200);//執行的時候  只需要把對應形參的值傳遞給函數即可        sum(10) // num1 = 10  num2 = undefined 沒有傳遞的形參預設是undefined

三、return

  在函數裡面return  就是當前函數提供給我們的出口,因為不提供出口的話,閉包的機制導致了在函數體的外面

無法擷取裡面的值,如果想在外面使用裡面的值,值需要通過return 把total的值返回到外面即可--》“傳回值機制”

  外面想用哪個值,我們就把哪個值返回 ->return total ;並不是把變數返回給外面,而是把變數儲存的值返回給外面

  var total = sum(100,200) // 首先把函數sum執行,然後把sum執行後的傳回值(看sum執行的返回結果,只需要看sum中是否存在return,有return,return後面返回的值是什麼,那麼函數的傳回值就是啥;如果sum中沒有return 那麼預設的傳回值是undefined)賦值給外面的變數total

  在函數體中return 下面的代碼都不會執行了 ->終止函數體中代碼執行的作用

四、arguments

  "任意數求和":隨便給我幾個數(具體幾個不知道,就沒有辦法定義形參的個數),我都能求出和 

  arguments:函數天生內建的(不管寫沒寫形參,也不管是否傳遞值,arguments始終都是存在的),用來接收函數傳遞進來的參數值的集合

  typeof arguments  // object 它是一個對象資料類型的值,它是以數字作為索引,索引從零開始逐級遞增,索引0儲存的是第一個參數,索引1儲存的是第二個參數值,索引n儲存的是第n+1個參數值。。。有一個叫做length的屬性代表一共傳遞了多少個參數; 它不是數組,我們把它稱之為類數組

  callee:function sum ()... 它還有一個自己特殊的屬性callee,代表當前函數本身 

function sum(){            var total = null;            for(var i = 0;i<arguments.length;i++){
          var cur = Number(arguments[i])
          //對於非有效數字我們不在進行累加,防止最後結果是NaN
          if(isNaN(cur)){
       continue;
          }
total+=cur; } return total; }

五、匿名函數

  實名函數:起了名字的函數就是實名函數

  匿名函數:沒有名字的函數 就是匿名函數

  在js中常用到的匿名函數有兩種方式:

    1)、自執行函數:定義函數和函數執行一起完成了

      ;(function(num){ 前面加;的作用是為了防止上面代碼結束不加;

      }(100))

    2)、函數運算式:把函數定義的部分當做一個值賦值給一個變數或者元素的某一個行為

      var f = function(){}

  

js學習總結----函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.