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

         hello,沐晴又来更新啦,今天呢,跟大家讲讲让人头疼的函数表达式和函数声明,反正我当初看那本高级程序的时候,是没怎么看太透,哈哈。我是个比较重基础的人,跟我一起探讨函数表达式和函数声明的世界吧。

    首先呢,先看看他们的颜值:

     

     函数声明:function 函数名(){}
    
      函数表达式:function 函数名(可写可不写)(){};
    
     (不写名叫做匿名函数表达式。写名叫做命名函数表达式。推荐用匿名的。)

    这么一看长的好像没啥区别,反正颜值也都不高。那么我们如何区别是函数表达式还是函数声明呢?答案就是看上下文,何谓上下文,你懂的,就像语文作文里面的上下文。

    函数声明:function aaa(){} (这种就是函数声明,上下文啥也木有。)
    
    函数表达式:
    var a = function aaa(){} : 命名函数表达式
    var a = function (){} :匿名函数表达式
    (function aaa(){}) : 表达式 
    位运算符:
    ~funtion aaa(){} : 表达式 
    -funtion aaa(){} : 表达式 
    +funtion aaa(){} : 表达式 
    !funtion aaa(){} : 表达式
    
    (有上面的这些表现形式的都是函数表达式)

    OK,看了表现上的不一样,我们已经知道如何区别他们了,下面就来了解一下他们真正在使用上的区别

    1 函数表达式可以直接后面加括号执行 而函数声明是不可以。

    function aaa(){}(); // 不可以执行。必须得通过函数名调用 aaa();
    var a = function aaa(){} (); // 加括号就可以直接执行  

    2 函数声明可以提前被解析出来。表达式不可以。

    比如,只要你声明过函数,不管函数是在哪个位置声明的,它都会被提前解析出来,所以在任何地方调用都不会有问题。但是函数表达式不会被提前解析,所以你能在函数表达式之前就调用它。(关于解析机制,下篇我会认真的写出来分享给大家。)

    aaa(); //可以调用
    
    a(); //调用会出错
    
    function aaa(){}; // 函数声明
    var a = function aaa(){}; // 函数表达式

    主要的就是这两方面的区别,相对于函数声明,表达式可以让我们不用费劲想那么多函数名,代码也更简单,等到我写闭包的时候,会体现它的优点。

    好的,今天的探讨就到这里了,如有错误,欢迎指正。我是沐晴。下篇不见不散。

  • 相关阅读:
    原来这才是 Socket !
    C 语言基础,来喽!
    手把手教你汇编 Debug
    拒做技术小白?计算机关键概念你不得不掌握!
    利用Windbg分析Magicodes.IE一次错误编写导致内存剧增
    Spring Boot整合JApiDocs实现API文档
    Spring Boot 快速整合Swagger
    Python测试框架pytest入门基础
    性能测试之测试分析与调优
    html5调用摄像头截图
  • 原文地址:https://www.cnblogs.com/moqing/p/5588353.html
Copyright © 2011-2022 走看看