怎样区别函数声明和函数表达式?

函数声明指的是形如:

 function sum(num1,num2){};

的,而函数表达式指的是形如:

 

 var sum = function (num1,num2){};

两者在写法上有不同,并且解析器在执行环境中加载数据时,解析器会先解析函数声明,并使其在执行代码之前可以访问(无论执行代码在它之前还是之后);对于函数表达式来说,必须等到解析器执行到它所在的代码行,才会被解释和执行;

例如:

alert(sum(10,10));
function sum (num1,num2){
    return num1 + num2;
};

上面的代码可以正常执行;但是如果把函数声明改成函数表达式,就会出错;

如:

 alert(sum(10,10));
var sum = function (num1,num2){
     return num1 + num2;
     };

因为函数位于一个初始化的语句中,而不是函数声明,也就是在执行到  alert(sum(10,10));这一句时,其中的sum变量没有保存对函数的引用。所以在函数中,一定要确保有函数声明。

你可能感兴趣的:(怎样区别函数声明和函数表达式?)