zoukankan      html  css  js  c++  java
  • Javascript函数声明与函数表达式的区别

    Javascript函数声明与函数表达式的区别

    在定义函数时,我们一般使用下面这两种方法:

    使用函数声明定义:

    1
    2
    3
    function  sum (a, b) {
        return a + b;
    }

    使用函数表达式定义:

    1
    2
    3
    var sum = function (a, b) {
        return a + b;
    }

    调用方法都是一样的:

    如求“1+1”等于几:

    1
    alert(sum(1, 1));

    但这两种方法还是有区别的。解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用;而函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。

    示例:

    1
    2
    3
    4
    alert(sum(1, 1));
    function  sum (a, b) {
        return a + b;
    }

    以上代码可以正常执行。因为在代码执行之前,解析器就已经通过一个名为函数声明提升的过程,读取并将函数声明添加到执行环境中。在对代码求值时,Javascript引擎在第一遍会声明函数并将它们放到源代码树的顶部。所以,即使声明函数的代码放到了调用它的代码的后面,Javascript引擎也能把函数声明提升到顶部。如果像下面例子所示,把上面的函数声明改为函数表达式,就会在执行期间导致错误。

    1
    2
    3
    4
    alert(sum(1, 1));
    var sum = function (a, b) {
        return a + b;
    }

    以上代码之所以会在执行期间产生错误,原因在于函数位于一个初始化语句中,而不是一个函数声明。换句话说,在执行到函数所在的语句之前,变量sum不会保存有对函数的引用,并且第一行代码已经产生错误,也就不会执行到下一行。

    总体来说,除了什么时候可以通过变量访问函数这一点区别之外,函数声明与函数表达式的语法其实是等价的。

  • 相关阅读:
    HTML DOM 12 表格排序
    HTML DOM 10 常用场景
    HTML DOM 10 插入节点
    HTML DOM 09 替换节点
    HTML DOM 08 删除节点
    HTML DOM 07 创建节点
    022 注释
    024 数字类型
    005 基于面向对象设计一个简单的游戏
    021 花式赋值
  • 原文地址:https://www.cnblogs.com/---cc/p/3736857.html
Copyright © 2011-2022 走看看