《 JavaScript程序設計》—— 第五章 函數總結及練習

主要總結:

  • 函數值是一個帶有參數的代碼塊,能夠根據須要任意運行(調用)

  • 調用一個函數,咱們會向它的形參傳送實參。多餘的形參會被轉換爲undefined。函數能夠經過return語句向調用者返回結果。若是歷來沒有執行過return語句,則默認返回undefined

  • 一種好的編程實踐是:在爲函數作註釋時,應當說明這個函數作些什麼,而不是它如何作。

  • 在編寫處理對象的函數時,必須作出決定:是但願這個函數修改其對象實參的的屬性仍是返回新對象。

  • JavaScript變量要麼具備全局做用域,要麼具備函數(局部)做用域。

  • JavaScript有兩個屬性:lengthprototypeprototype對象用於存儲一些屬性,可供該函數建立的全部對象訪問,實際上就是容許定義新類型。咱們能夠向函數提供更多屬性。

  • 有的函數能夠做爲對象的屬性,有的函數能夠經過this引用表達式引用對象的其餘屬性,這種函數稱爲方法。方法時OOP的核心概念。

  • 高階函數就是以形參或者返回函數的函數,他們能夠簡化集中程序設計任務,能夠減小腳本中的共同代碼數量。

  • 函數能夠用函數聲明定義,能夠直接使用函數表達式定義,也能夠經過變量或對象屬性指定函數表達式定義。函數聲明雖然方便,卻不能在某些上下文中使用,其做用域規則不夠直觀,會模糊一個事實:函數就是值,與其餘值沒有區別


練習:

  • 編寫一個函數,返回兩個實參的最大值。編程

function large(x,y) {
            return x>y ? x : y;
        };

  • 編寫一個函數,返回兩個實參的平均值。數組

function mean(m1,m2) {
            return (m1+m2)/mean.length
        };

  • 編寫一個函數,返回一個數組中全部項目的平均值。dom

function arrMean(arr) {
            var sum = 0;
            for (var i=0;i<arr.length;i++) {
                sum += arr[i];
            }
            return sum/arr.length;
        };

  • 解釋運行如下腳本結果,回答中應當涉及"結合律"一詞函數

var cubeOf = function (x) {
            return x*x*x;
        };
        alert("魔方中共有:"+cubeOf(3)-1+" 個立方體");

咱們分析一下alert中的語句,從左至右,第一個是字符串,後接一個加號,則說明此加號是作字符串鏈接符使用。繼續往右,函數調用優先級是比加號高的,因此先執行函數調用,返回一個數字,再相加。此時應該是"....:27"注意接下來,一對字符串與一個類型爲數值的數字作減號運算獲得什麼?咱們知道,這實際上是隱式轉換數值的方法之一,因此JS會嘗試把以前因此的字符串轉換成數值類型來與1進行計算,不信試一下alert("15"-1)。可是失敗了,因此會轉換爲NaN,注意,此時數值類型是number,alert(typeof NaN),而後NaN與後面字符串繼續相加,又轉換成了字符串類型。最後獲得一個類型爲字符串的字符串。this


  • 編寫一個函數,接受兩個數字,並返回介於這兩個值之間的一個隨機數prototype

function random(n1,n2) {
            var randomArr = [];
            if (n1>n2) {
                for (var i=n2+1;i<n1;i++) {
                    randomArr.push(i);
                }
            } else {
                for (var j=n1+1;j<n2;j++) {
                    randomArr.push(j);
                }
            }
            return randomArr[[Math.floor(Math.random()*randomArr.length)+1]]
        };

  • 編寫一個函數接受三個值,並返回其中值。三個數值的中值就是大於或等於另兩值的一個,小於或等於剩下的那個值。(尼瑪這形容)設計

    1. 中值也稱中位數,即數據按升序或者降序排列,假若有n個數據,當n爲偶數時,中位數爲第n/2位數和第(n+2)/2位數的平均數;若是n爲奇數,那麼中位數爲第(n+1)/2位數的值。code

    function midValue(n1,n2,n3) {
            var arr = [n1,n2,n3];
            arr.sort(function (a,b) {return a-b});    // 升序排序
            return arr[((arr.length+1)/2)-1];        // 得到奇數位中位數,但因爲數組計算方式因此-1
        };

  • 編寫一個函數,返回一個給定數組中0的個數。對象

function numberOfZeros(arr) {
            var counter = 0;
            for (var i=0;i<arr.length;i++) {
                if (arr[i]===0) {
                    counter++;
                }
            }
            return counter;
        };

  • 編寫一個函數,返回一個給定字符在字符串中的出現次數。排序

function strNum(str,x) {
            var arr = String(str).split("");
            var num = 0;
            alert(arr)
            for (var i=0;i<arr.length;i++) {
                if (arr[i]===x) {
                    num++;
                }
            }
            return num;
        };
相關文章
相關標籤/搜索