js函数表达式和函数语句的区别

区别主要有以下三点:

 (1)当函数语句被定义时,在同一个脚本代码中被优先考虑,因此,无论该函数在定义前还是定义后都可以被脚本调用。

     如: 

                    myFunction();

                    function myFunction(){}

         而函数表达式,只有被创建后才能被调用,

        如:myFunction();

             var myFunction = function(){}

(2)函数表达式可以被作为另外一些函数或方法的参数。如:

      setInterval(function(){};),111);

      这时函数表达式就作为参数了。

 (3)函数表达式和函数语句的区别还体现在内存管理和垃圾回收方面。

函数表达式不像函数语句那样独立存在,把函数表达式赋给一个变量时,就会在代码中创建对该函数表达式的唯一引用。如果上述变量无法使用时,函数也将无法使用。如:

var myFunction = function(){}

myFunction();//可以调用

myFunction = null;

myFunction();//不可调用,导致错误

函数语句则不同,它是以对象形式独立存在的,无法删除。如:

function muFunction(0{}

var f = myFunction;

f();//可以调用

myFunction();//可以调用

f = null;

myFunction();//可以调用

f();//不可调用

注意:如果不是特殊情况下,建议使用函数语句。

原文地址:https://www.cnblogs.com/ai3xiaoyi/p/3418497.html