首頁 > web前端 > js教程 > 一起聊聊JavaScript函數的定義與基本使用

一起聊聊JavaScript函數的定義與基本使用

WBOY
發布: 2022-07-01 11:59:04
轉載
2002 人瀏覽過

本篇文章為大家帶來了關於javascript的相關知識,其中主要整理了函數的定義與基本使用的相關問題,包括了用函數語句定義、函數的呼叫、未定義的實參等等內容,下面一起來看一下,希望對大家有幫助。

一起聊聊JavaScript函數的定義與基本使用

【相關推薦:javascript影片教學web前端

##1.用函數語句定義


先給一個例子,函數的功能是傳回數組元素的和;

function sumArray(arr) {  
    var sum = 0;  
    for(var i = 0,aLength = arr.length;i < aLength;i++) {  
        sum += arr[i];  
    }  
    return sum;  }
登入後複製

關鍵字

function後面空一格,sumArray 是函數的名字,其命名規範與變數名稱的命名規範相同:只能有字母、數字、底線和美元符號,不能以數字開頭,不能是關鍵字。

括號中是參數,又叫

形式參數,只需要參數名稱就可以。參數可以是0個、1個或多個,彼此之間用,隔開,{}中間包含的是函數體。含有一條或多條語句。函數體用來實現函數的功能。

關鍵字

return後面是函數的回傳值,函數也可以沒有回傳值。函數運行完return這句話這裡就會退出運行,return下面的語句不再執行。傳回值即函數的輸出。

用這種方式定義的函數,

在函數定義的前面和後面都可以呼叫該函數,只要函數和呼叫函數的語句在一個原始檔裡面就可以了。

2.用表達式定義

用表達式的方式定義函數,就是用賦值表達式

把函數賦值給一個變數,這其實就是把函數看成一個變數。這個時候函數可以有名字,也可以沒有名字,沒有名字的函數叫做匿名函數

    有名字的;
  • var funct = function getMax(a,b) {  
        return a>b?a:b;  };//注意这后面的分号不能少,因为我们定义的是一个变量!
    登入後複製

    用函數語句定義不同的是,只能在函數定義語句之後呼叫函數,且呼叫的時候只能用變數名稱funct,不能用函數名稱getMax,如:

    var funct = function getMax(a,b) {  
        return a>b?a:b;  
    };  
    console.log(funct(1,2));//输出2
    登入後複製
      匿名函數;
    • 所謂匿名函數就是關鍵字
      function之後直接是參數列表:
    var funct = function(a,b) {  
        return a>b?a:b;  };
    登入後複製
    這個函數沒有名字,它被賦值給了變數

    funct,所以叫匿名函數。同樣,也只能在這一語句之後呼叫該函數。

    var funct = function(a,b) {  
        return a>b?a:b;  };  console.log(funct(1,2));//输出2
    登入後複製

    總結:用表達式定義函數是即拿即用的,定義了就只能在這一語句之後呼叫該函數

    3 .函數的呼叫

    在實訓四中,我們曾經介紹過物件可以有自己的方法,當然這也是函數。這種函數的呼叫和前面兩關定義的函數有細小的差別。

    //函数的定义:求三个数的最大值  
    function max(a,b,c) {  
        if(a > b) {  
            if(a > c)  
                return a;  
            else   
                return c;  
        }  
        else {  
            if(b > c)  
                return b;  
            else   
                return c;  
        }  
    }  
    //调用该函数  
    var result = max(1,2,3);//result为3  
    console.log(result);//输出3
    登入後複製
    呼叫函數的時候,需要傳入和形參相同個數的的具體值,上面的函數有

    3個參數,所以下面呼叫的時候傳入 3個具體的值,1傳給參數a2傳給參數b3傳給參數c。函數的回傳值透過賦值符號=傳給了變數result。如果函數體內沒有return關鍵字,將會傳回undefined

    物件裡定義的函數的呼叫:

    var ob = {  
        id:1,  
        getMax:function(a,b) {  
            return a>b?a:b;  
        }  };  var result = ob.getMax(2,1);//result值为2  var result1 = ob["getMax"](2,1);//result1的值也是2
    登入後複製
    與上面的差異是,這裡要定位到函數,需要使用

    物件名稱.函數名稱物件名稱["函數名稱"],其它相同。

    4.未定義的實參

    在大部分的程式語言裡面,都會對呼叫函數時傳入的實參數和型別進行檢查,而

    JavaScript不檢查實參的類型,也不檢查實參的個數。
    JavaScript中的實參會依照順序從左到右依序比對上形參,例如:

    function myFunction(a,b,c) {  
        console.log(a);  
        console.log(b);  
        console.log(c);  }  myFunction(1,2,3);
    登入後複製
    實參

    1傳入形參a,實參2傳入形參b,實參3傳入形參c。當實參個數少於形參時,靠右的形參會被傳入值undefined。如:

    function myFunction(a,b,c) {  
        console.log(a);  
        console.log(b);  
        console.log(c);  }  myFunction(1,2);
    登入後複製
    實參

    1傳入形參a,實參2傳入形參bundefined傳入形參c。如果只想給右側的參數傳入數據,可以給前幾個實參傳入undefined。如:

    function myFunction(a,b,c){  console.log(a);  console.log(b);  console.log(c);  }  myFunction(undefined,1,2);
    登入後複製
    上面這兩種做法不夠嚴謹,最佳實踐是給可能被傳入

    undefined值的形參設定一個預設值。如:

    function getSum(a,b,c) {  
        if(c === undefined)   
            c = 0;  
        console.log(a+b+c);  }  myFunction(1,2);
    登入後複製

    5.实参对象

    JavaScript一切都是对象,实参也是一个对象,有一个专门的名字arguments,这个对象可以看成一个数组(类数组,不是真的数组),实参从左到右分别是arguments[0]、arguments[1]...arguments.length表示实参的个数。

    //求参数的和  function getSum() {  
        var aLength = arguments.length;  
        var sum = 0;  
        for(var i = 0;i < aLength;i++) {  
            sum += arguments[i];  
        }  
        return sum;  }  console.log(getSum(1,2,3,4,5))//输出15
    登入後複製

    这里的形参直接省略,使用arguments[i]表示。

    6.对象作为参数

    复杂的函数通常多达十几个参数,尽管JavaScript不做参数个数和类型的检查,但是调用时实参的顺序不能乱。开发人员需要检查每一个实参和形参的对应关系,这样效率很低。一种很好的解决方案是使用对象作为参数,函数会根据对象的属性名操作参数。

    function myFunction(obj) {  
        console.log(obj.name);  
        obj.number++;  
        return obj.number;  }  myObj = {name:"myObj",number:34};  myFunction(myObj);//输出myObj  console.log(myObj.number);//输出35
    登入後複製

    7.函数对象作为另一个函数的参数

    一个函数(为方便行文,称为a函数)可以作为另外一个函数(称为b函数)的参数b函数最终可以返回一个具体的值。

    从原理上来说,b函数在自己的函数体内调用了a函数,所以需要把a函数的名字作为实际参数传递给b函数。如下:

    //求最大值  function getMax(a,b) {  
        return a>b?a:b;  }  //求最小值  function getMin(a,b) {  
        return a<b?a:b;  }  //下面这个函数以函数作为参数,并最终返回一个值  function getM(func,num1,num2) {  
        return func(num1,num2);  }  getM(getMax,1,2);//返回2  getM(getMin,1,2);//返回1
    登入後複製

    我们把a函数的名字(getMax或者getMin)传给b函数(getM()),然后在b函数内部调用传入的a函数,得到相关的结果。

    【相关推荐:javascript视频教程web前端

    以上是一起聊聊JavaScript函數的定義與基本使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板