JavaScript---网络编程(2)-函数与数组-1

简介: JavaScript---网络编程(2)-函数与数组

上节,学完循环了~

现在学Javascript的函数和数组。

JavaScript语法

每一种语言都有自己的语法规则,JS语法与Java很像,所以学习起来比较容易。JS中也一样有变量,语句,函数,数组等常见语言组成元素。


1.一般函数

格式:
function  函数名(形式参数...)
{
    执行语句;
    return 返回值;
}


函数是多条执行语句的封装体,只有被调用才会被运行。

注意:调用有参数的函数,但没有给其传值,函数一样可以运行,或者调用没有参数的函数,给其传值,该函数也一样运行。

说的简单点:只要写了函数名后面跟了一对小括号,该函数就会运行。那么传递的参数呢?

其实,在函数中有一个参数数组对象(arguments),该对象将传递的参数都封装在一个数组中。

例:


function demo()//定义函数。
{
    alert(arguments.length);
}


demo(“hello”,123,true);//调用函数。

那么弹出的对话框结果是3,如果想得到所有的参数值,可以通过for循环遍历该数组。


for(var x=0; x<arguments.length; x++)
{
    alert(arguments[x]);
}


为了增强阅读性,最好按照规范,按定义好的形式参数传递实际参数。

函数在调用时的其他写法:

var show = demo();//show变量接收demo函数的返回值。

var show = demo;//这种写法是可以的,意为show和demo代表同一个函数。

//那么该函数也可以通过show()的方式运行。


代码演示1:

<html>
  <head>
    <title>javascript函数用法演示</title>
  </head>
  <body>
  <!-- 
      ※java中函数定义的格式:
    int sum(int a,int b){
      ....
      return s
    }
      ※js中函数定义的格式:
    function sum(a,b){
      ....
      return s
    }
    ▲▲js中的函数可以理解成一个function类型的对象
   -->
      <script type="text/javascript">
          //※浏览器对js代码是边解析边执行的
          //注意,函数的调用  应该在浏览器解析完 该函数的定义 之后进行
          //调用
          hello();//ie11中无效---因为浏览器解析该语句时,此函数还没有定义
      </script>
     <script type="text/javascript">
        //定义---无参函数
        function hello(){
            document.write("hello function!");
        } 
        hello();//调用
        //定义---有参函数
        function add(a,b){
            var s = a+b;
            return s;
        }
        document.write("<br/>")
        document.write("s="+add(10,23));
     </script>
  </body>
</html>

360浏览器8.1 演示1结果:

image.png

代码演示2:

<html>
<head>
<title>javascript函数用法演示2---一点小细节</title>
</head>
<body>
    <script type="text/javascript">
        function show(x, y) {
            document.write(x + "," + y);
            document.write("<br/>");
        }
        show(23, 22);//23,22
        show(23); //23,undefined
        show(); //undefined,undefined
        show(23, 22, 11);//23,22 后面的一个参数函数接收了但没有用
        //函数的参数全部是js内部用一个arguments数组来接收与存放的---该对象是js内部隐含帮我们做的,我们可以访问到这个数组对象
        function show2(x, y) {
            arguments[0] = 1000;//可以把形参x的值改掉
            document.write(x + "," + y + "<br/>");
            for ( var i = 0; i < arguments.length; i++) {
                document.write(arguments[i] + ",");
            }
        }
        show2(11, 22, 33, 44);
        document.write("<br/>");
        //※综上,函数的技术细节:
        //1, js中的函数是没有重载,只以函数名来识别的---其实函数名就是一个function对象的引用的名字
        //2, js函数中有一个内部维护的arguments数组来接收与保存形参
    </script>
    <script type="text/javascript">
        function getValue() {
            document.write("aa");
            document.write("<br/>");
            return 100;
        }
        var v = getValue();
        document.write("v=" + v);
        document.write("<br/>");
        var v2 = getValue; //相当于getValue把引用值传给v2,因此v2也是一个“function对象”----getValue和v2都是引用变量
        document.write("v2=" + v2);//其实是输出v2对象的toString()
        document.write("<br/>");
        document.write("v2=" + v2()); //调用v2这个函数对象---调用函数
        document.write("<br/>");
    </script>
</body>
</html>

360浏览器8.1 演示2结果:

image.png

动态函数

通过Js的内置对象Function实现。

例:

    var demo = new Function(“x,y”;”alert(x+y);”);
        demo(4,6);
        如同:
        function demo(x,y)
        {
            alert(x+y);
        }
        demo(4,6);

不同的是,动态函数,参数以及函数体都可以通过参数进行传递,可以动态指定。


匿名函数

  格式 : function(){…}

  例:

    var demo = function(){…}

   demo();

通常在定义事件属性的行为时较为常用。

例:


function test()
        {
            alert(“load ok”);
        }
        window.onload = test;

可以写成匿名函数的形式:

window.onload = function()
        {
            alert(“load ok”);
        }• 1
• 2
• 3
• 4

匿名函数就是一种简写格式。

代码演示:

<html>
  <head>
    <title>javascript函数用法演示3---动态函数,匿名函数</title>
  </head>
  <body>
    <!-- 
      ※1※ 动态函数:使用的是js中内置的一个对象---- Function
       注意,小写的function是用来声明的,而大写的Function是用来new对象的
      //把下面的函数写成动态函数
        function add(a,b){
            var s = a+b;
            return s;
        }
     -->
    <script type="text/javascript">
       //把函数的形参用第1个参数传入,函数体中的代码用第2个参数传入----可以通过调用者动态传入函数体,因此非常灵活,该思想类似Java当中的类反射。
       var add = new Function("a,b","var s = a+b; return s; ");
       document.write( add(12,13) );
    </script>
    <!-- 
      ※2※ 匿名函数: 没有函数名的函数。这种方式我们以后在事件处理时会经常使用,类似Java中的匿名内部类经常用在事件监听器中一样
    -->
    <script type="text/javascript">
        var fun= function(a,b){
          return a+b;
        };
        document.write( fun(2,3) );
    </script>
    <!-- 用匿名函数给按钮添加事件绑定  -->
    <button id="btn1">一个按钮</button>
    <script type="text/javascript">
      btn1.onclick=function(){
          alert('aa');
      };
    </script>
  </body>
</html>
目录
打赏
0
0
0
0
989
分享
相关文章
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
85 19
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
75 4
企业用网络监控软件中的 Node.js 深度优先搜索算法剖析
在数字化办公盛行的当下,企业对网络监控的需求呈显著增长态势。企业级网络监控软件作为维护网络安全、提高办公效率的关键工具,其重要性不言而喻。此类软件需要高效处理复杂的网络拓扑结构与海量网络数据,而算法与数据结构则构成了其核心支撑。本文将深入剖析深度优先搜索(DFS)算法在企业级网络监控软件中的应用,并通过 Node.js 代码示例进行详细阐释。
74 2
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
126 32
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
111 9

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等