在初学JS的过程中,老是不能区别什么是函数表达式什么是函数定义,这对基础知识的夯实是不利的。因此查阅资料,认真对其进行了区别。
简单总结如下:
1.区别一:以function开头的函数纪委函数定义,其他则为函数表达式;
2.区别二:函数表达式可以省略函数名。
function FunctionName(FormalParameterList) { FunctionBody } //函数定义
function [FunctionName](FormalParameterList) { FunctionBody } //函数表达式
在实际运用函数过程中,函数定义不能立即执行,会引起SyntaxError语法错误,因此恤将它解析为函数表达式。即在函数定义钱加上其他任意符号,最常见且不怪异的写法为在之前加括号,例如:(function getName(){})。这样大家是不是会联想到匿名函数?对了,此时可以学到另一个知识,即'(function() {})()'和'(function(){}())'两个函数,这两个函数的区别是什么呢?我们可以先看看他们的共同点,与普通函数相比,很明显,他们都有括号,而括号在javascript中有2种作用:一是确立运算优先级,二是作为分组运算符。这里肯定不是前一种用法,二是后一种。此时:
(function(){})(),用括号评估了一个函数表达式,随后使其参与“函数调用”;
(function(){}()),用括号评估了一个函数调用,随后由于语句的结束而被执行。