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。

  • 相关阅读:
    c++ mvc timer的应用
    table 在网页无法顶到头部问题
    vs2008 C++ 没有找到MSVCR90D.dll 问题
    FrametSet中各frame,iframe之间dom的访问
    关于VC中的Timer
    Vc2008中如何为视图类添加消息响应
    C++ map在MFC中的应用
    解决iframe 右边有空白的问题
    poj1125 Stockbroker Grapevine *
    poj1062 昂贵的聘礼 **
  • 原文地址:https://www.cnblogs.com/yansj1997/p/2563689.html
Copyright © 2011-2022 走看看