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(函数提升)和运行时机(解析时/运行时)上的差异。

  • 相关阅读:
    UITextView自适应高度解决方法
    UITextView自适应高度出现的问题
    UITextView出现的一些问题
    服务器终于好了!
    Update语句
    VS.NET经验与技巧
    唯一约束
    由C#风潮想起的-给初学编程者的忠告
    location.search在客户端获取Url参数的方法
    Web Services 入门概念
  • 原文地址:https://www.cnblogs.com/endlessmy/p/8631376.html
Copyright © 2011-2022 走看看