美文网首页
函数声明、函数表达式区别

函数声明、函数表达式区别

作者: Allan要做活神仙 | 来源:发表于2018-05-01 09:27 被阅读8次

    1)函数声明(Function Declaration);
    // 函数声明

        function funDeclaration(type){
            return type==="Declaration";
        }
    

    2)函数表达式(Function Expression)。
    // 函数表达式

        var funExpression = function(type){
            return type==="Expression";
        }
    

    上面的代码看起来很类似,感觉也没什么太大差别。但实际上,Javascript函数上的一个“陷阱”就体现在Javascript两种类型的函数定义上。下面看两段代码(分别标记为代码1段和代码2段):

    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     }
    

    用函数声明创建的函数funDeclaration可以在funDeclaration定义之前就进行调用;而用函数表达式创建的funExpression函数不能在funExpression被赋值之前进行调用。
    为什么会这样呢?!这就要理解Javascript Function两种类型的区别:用函数声明创建的函数可以在函数解析后调用(解析时进行等逻辑处理);而用函数表达式创建的函数是在运行时进行赋值,且要等到表达式赋值完成后才能调用。
    代码1段JS函数等同于:

        function funDeclaration(type){
            return type==="Declaration";
        }
        funDeclaration("Declaration");//=> true
    

    代码2段JS函数等同于:

    var funExpression;
        funExpression("Expression");//==>error
        funExpression = function(type){
            return type==="Expression";
    }
    

    相关文章

      网友评论

          本文标题:函数声明、函数表达式区别

          本文链接:https://www.haomeiwen.com/subject/izlxrftx.html