js-函数表达式和函数声明的区别

1.函数声明

函数声明以function关键字开头,接着是必须的函数(变量)名和以逗号分隔的可选的参数列表,再接着就是以大括号封装的函数体。函数声明必须是一个单独的JavaScript语句。必须含有函数名

2.函数表达式

在任何情况下都是其它JavaScript语句的一部分(比如赋值表达式等号的右侧、函数的参数)的函数被称为函数表达式。直接可以运算,函数表达式是直接可以被执行符号执行的

3.函数表达式与函数声明的比较

函数声明中函数名是必须的;(因为调用时是通过函数名来调用)

函数表达式中则是可选的;(比如函数表达式中可以将函数表达式赋给一个变量,通过变量名来访问)

函数声明放在任意位置都可以被调用;函数表达式,解析器只有在读到函数表达式所在那行的时候才执行

使用函数表达式的话,只有变量声明提升了——变量的初始化代码仍然在原来的位置。

使用函数声明的话,函数名称和函数体都提升了,脚本中所有函数和函数中所有嵌套的函数都会在当前上下文中其他代码之前声明。也就是说,可以在函数声明之前调用它

举例:

       function fun(){    //函数声明
                console.log("hello");
            }                                            
//          var fun2 = function(){    //函数表达式
//                console.log("world");
//          }
//            fun()
//            fun2()

 在函数的前面可以加上+-!可以让函数声明变成函数表达式

+function fun(){        //立即执行函数
//                console.log("hello")
//            }()

函数声明了以后直接自己执行,用函数的返回值,适合做初始化的工作; 

立即执行函数相关介绍:

  格式:

    (1)(function() {})();

    (2)( function() {}() );

注意:在写立即执行函数时,如果前面有js代码,则他们的分号必须都加上,否则会报错。

var abc = "helloworld"  //  报错:Uncaught TypeError: "helloworld" is not a function
//正确写法是在函数前面或者上一句js代码后加上分号; (function(){ console.log(456) })()
原文地址:https://www.cnblogs.com/wcx-20151115-hzz/p/10139259.html