资讯专栏INFORMATION COLUMN

《 JavaScript程序设计》—— 第五章 函数总结及练习

genefy / 3068人阅读

摘要:在编写处理对象的函数时,必须做出决定是希望这个函数修改其对象实参的的属性,还是返回新对象。高阶函数就是以形参或者返回函数的函数,他们可以简化集中程序设计任务,可以减少脚本中的共同代码数量。编写一个函数,返回一个给定字符在字符串中的出现次数。

主要总结:

函数值是一个带有参数的代码块,可以根据需要任意运行(调用)

调用一个函数,我们会向它的形参传送实参。多余的形参会被转换为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
        };

编写一个函数,返回一个数组中所有项目的平均值。

        function arrMean(arr) {
            var sum = 0;
            for (var i=0;i

解释运行以下脚本结果,回答中应当涉及"结合律"一词

        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与后面字符串继续相加,又转换成了字符串类型。最后得到一个类型为字符串的字符串。

编写一个函数,接受两个数字,并返回介于这两个值之间的一个随机数

        function random(n1,n2) {
            var randomArr = [];
            if (n1>n2) {
                for (var i=n2+1;i

编写一个函数接受三个值,并返回其中值。三个数值的中值就是大于或等于另两值的一个,小于或等于剩下的那个值。(尼玛这形容)

中值也称中位数,即数据按升序或者降序排列,假如有n个数据,当n为偶数时,中位数为第n/2位数和第(n+2)/2位数的平均数;如果n为奇数,那么中位数为第(n+1)/2位数的值。

    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

编写一个函数,返回一个给定字符在字符串中的出现次数。

        function strNum(str,x) {
            var arr = String(str).split("");
            var num = 0;
            alert(arr)
            for (var i=0;i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83054.html

相关文章

  • Javascript高级程序设计 (第三版)》五章 引用类型

    摘要:类型没有重载声明了两个同名函数,而结果则是后面的函数覆盖了前面的函数。引用的是函数据以执行的环境对象函数属性和方法表示函数希望接收的命名参数的个数。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。 Function类型 没有重载 声明了两个同名函数,而结果则是后面的函数覆盖了前面的函数。 var addSomeNumber = function (num)...

    GeekGhc 评论0 收藏0
  • iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享

    摘要:微信小程序课程,面向所有具备前端基础知识的同学官网访问官网更快阅读全部免费分享课程出品全网最新微信小程序基于最新版开发者工具之初中级培训教程分享。 ?? 微信小程序课程,面向所有具备前端基础知识的同学 ?? iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:《iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教...

    hersion 评论0 收藏0
  • iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享

    摘要:微信小程序课程,面向所有具备前端基础知识的同学官网访问官网更快阅读全部免费分享课程出品全网最新微信小程序基于最新版开发者工具之初中级培训教程分享。 ?? 微信小程序课程,面向所有具备前端基础知识的同学 ?? iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:《iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教...

    MRZYD 评论0 收藏0
  • iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享

    摘要:微信小程序课程,面向所有具备前端基础知识的同学官网访问官网更快阅读全部免费分享课程出品全网最新微信小程序基于最新版开发者工具之初中级培训教程分享。 ?? 微信小程序课程,面向所有具备前端基础知识的同学 ?? iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:《iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教...

    李昌杰 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<