zoukankan      html  css  js  c++  java
  • JS函数声明和函数表达式的关系

    1、函数声明

    1     // 函数声明
    2     function funDeclaration(type){
    3         return type==="Declaration";
    4     }

    2、函数表达式

        // 函数表达式
        var funExpression = function(type){
            return type==="Expression";
        }

    JS代码在解析时会进行函数提升,因此在同一个作用域内,不管函数声明在哪里定义,该函数都可以进行调用。而函数表达式的值是在JS运行时确定,并且在表达式赋值完成后,该函数才能调用。

    这个微小的区别,可能会导致JS代码出现意想不到的bug,让你陷入莫名的陷阱中。如下代码:

    1     funDeclaration("Declaration");//=> true
    2     function funDeclaration(type){
    3        return type==="Declaration";
    4    }
    1      funExpression("Expression");//=>error
    2      var funExpression = function(type){
    3         return type==="Expression";
    4     }

    出现上面的错误是因为用函数声明创建的函数可以在函数解析后调用(解析时进行等逻辑处理);

    而用函数表达式创建的函数是在运行时进行赋值,且要等到表达式赋值完成后才能调用。其本质原因体现在这两种类型在Javascript function hoisting(函数提升)和运行时机(解析时/运行时)上的差异。

  • 相关阅读:
    SSH框架中使用注解和xml配置的区别
    web项目中log4j的配置
    嵌入式—ASCII码
    MATLAB
    MATLAB
    MATLAB
    MATLAB
    CentOS 7将网卡名称eno16777736改为eth0
    图像增强处理
    Debussy与modelsim联仿时 do 文件脚本
  • 原文地址:https://www.cnblogs.com/endlessmy/p/8631376.html
Copyright © 2011-2022 走看看