zoukankan      html  css  js  c++  java
  • JavaScript中的函数(一)

      javaScript中的函数实际上是对象,每一个函数都是Function类型的实例,和其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也就是一个指向函数对象的指针,也就是函数对象的一个引用,因此一个函数可以有多个名字。

     1.函数定义的方式:

      1)使用函数声明定义函数:

         function sum(num1,num2){

        return num1+num2;

      }

      2)使用函数表达式定义函数:定义变量sum并将其初始化为一个函数,变量sum可以引用函数。要注意函数末尾有一个分号,和声明变量一样。

        var sum = function(num1,num2){

        return num1+num2;

      };

     3)使用Function构造函数定义函数(一般不推荐,虽然很好理解Function对象类型)

         Function构造函数可以接收任意数量的参数,但是最后一个参数被视为函数体,其前面的参数视为新函数的参数。

         var sum = new Function("num1","num2","return num1+num2");

         因为这种方法定义函数时会导致解析两次代码(第一次解析是script代码,第二次是解析传入构造函数中的字符串)从而影响性能。

    2.script中不存在函数重载

     若存在多个函数的名称相同,则后面的函数会覆盖前面定义的函数。

     例如:

        function increNum(num){

         return num+10;

        }

        function increNum(num){

        return num+20;
        }

        var result = increNum(10);

        alert(result);//30

        以上代码与下面代码一样:

       var increNum = function(num){return num+10};

       increNum = function(num){return num+20};

       alert(increNum(10));//30

     3.函数声明和函数表达式的区别:

      解析器在向执行环境中加载数据时,对函数声明和函数表达式解析顺序和时机不同。解析器会先读取函数声明,使其在执行任何代码之前可以访问,而表达式必须等到解析器执行到它所在的代码行,才能真正的被执行。

       alert(sum(10,20));

       function sum(num1,num2){

        return num1+num2;

      }

      上面代码可以正常运行,因为在执行代码之前,解析器就先读取到了函数声明,将其添加到执行环境中,使得函数可以被访问。如果把函数声明改成函数表达式,就会出错。

      alert(sum(10,20));

      var sum = function(num1,num2){return num1+num2};

      除了这一点区别外,一般函数声明和函数表达式还是等价的。

  • 相关阅读:
    flexgrid的应用
    Flexigrid例子二: 原位编辑器
    JQuery 插件FlexiGrid 之完全配置与使用
    linux 配置环境变量不生效
    redis主从和哨兵搭建
    linux 清楚buff
    linux时间ESC修改为CST格式
    mysql-5.7.26 版本,表不区分区分大小写问题
    CDH-mysql 开启关闭 gtid
    mysql-5.7.26 安装已经 主从同步复制
  • 原文地址:https://www.cnblogs.com/zwbg/p/5762688.html
Copyright © 2011-2022 走看看