js函數-構成


前言

  函數是一種封裝,在任何語言中都是一個核心概念。在js中,函數是做為對象的子類型存在的。可以擁有自己的屬性和方法,可以做為值進行傳遞,這兩個特性讓js擁有使用函數式編程的能力。

函數的聲明

  字面量聲明:就是使用function關鍵字后面跟上固定語法。

function fnName(option1,option2){
  // 這里是代碼塊
}

  作為函數表達式:只要函數出現的地方,不是函數本身的function 關鍵字打頭的,都叫函數表達式。

// 作為函數表達式的函數
var fn = function(){}

函數的構成

  形參:函數定義的時候在小括號里面定義的參數列表。用來接收實際參數。

  實參:實際調用函數的時候傳入的參數。

  return:結束函數執行的同時把后面 跟着的值返回出去,作為函數的產出。是可選的。不顯示返回參數的話執行后會默認返回undefined。

  函數的執行:函數表達式后跟一對圓括號()就會執行。

  作為對象的函數:js中的函數作為對象類型是可以擁有自己的屬性的。

// 一個做作的加法函數
function add(a,b){ return add.calculate(); } // 為作為對象的函數定義一個calculate屬性 這個屬性的值指向一個匿名的function。
add.calculate = function(){ let num = 0; Array.prototype.map.call(this.arguments,function(item){ num += item; }) return num; } console.log(add(1,3)); // 4

函數的兩個屬性

  js中函數的形參和實際運行時傳入的實參個數可以是不對等的。默認的從左到右一一對應,多傳或少傳也不會報錯的。

  arguments:可以在函數體內通過函數名訪問argument獲得函數運行時的實參列表。

  length:可以獲取函數定義時,指定的形參個數。

  使用arguments定義一個重載的函數(根據不同實參個數做不同操作,jq的重載從概念上是這么干的)

function getSum(){ // 獲取實參列表
    var arg = getSum.arguments; // 沒有參數就直接返回 -1
    if(arg.length === 0){return -1} // 只有一個參數就直接返回這個參數
    if(arg.length === 1){ return arg[0]; } var sum = 0; Array.prototype.map.call(arg,function(item){ // item就是實參
        sum += item; }) return sum;
}

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM