《 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;
        };
相关文章
相关标签/搜索