zoukankan      html  css  js  c++  java
  • JavaScript程序开发(十四)—函数声明与函数表达式

    函数声明和函数表达式虽然都是在声明一个函数,但是二者有区别,解析器对二者的解析并非是一视同仁的。解析器会率先解析读取函数声明,并使其可以在执行任何代码前可用(可以访问);至于函数表达式,则必须等到解析器解析执行到它所在的行,才会被真正解释执行,才可被使用。如下代码所示:

    <script type="text/javascript">
        alert(add(2,3));
        function add(a,b){
            return a+b;
        }
    </script>

    该段代码可以正常执行,因为add(a,b)是一个函数声明,解析器可以在任何地方解析执行这个函数。而下面的代码:

    <script type="text/javascript">
        alert(2,3);
        var sum = function(a,b){
            return a+b;
        }
    </script>

    这段代码虽然也有输出,有执行,但并不是正确的执行了预期的功能。因为这段代码是一个函数表达式,必须确保解析器执行到了声明函数的这一行,才能被正确的调用,所以是本段代码是没有被正确执行的。

    还有一个小的知识点,就是作为值的函数,如果要访问的是函数的指针,而不是执行函数的话,那么久必须去掉函数后面的那对圆括号。如下代码:

    <script type="text/javascript">
        function callSomeFunction(someFunction,someArguments){
            return someFunction(someArguments);
        }
        
        function add10(num){
            return num+=10;
        }
        
        var result1 = callSomeFunction(add10,10);
        document.write(result1+"<br />");
        var result2 = add10(10);
        document.write(result2+"<br />");
    </script>

    传递给callSomeFunction的add10。

  • 相关阅读:
    esp32(M5STACK)在线体验(Ubuntu)
    esp32(M5STACK)程序烧写(Ubuntu)
    在Ubuntu环境下搭建esp32开发环境
    markdown让文字居中和带颜色
    Doxyfile中插入图片
    System.load 与 System.loadLibrary 的使用
    常见mysql的数据迁移
    mysql中有关树的函数
    spring整合quartz实现动态定时器
    javaweb项目中发布webservices服务
  • 原文地址:https://www.cnblogs.com/yansj1997/p/2563689.html
Copyright © 2011-2022 走看看