大家好,我是IT修真院深圳分院第02期学员孙剑立,一枚正直善良的web程序员。
今天给大家分享一下,修真院官网JS任务2中有关函数表达式和函数声明有什么区别??
1.背景介绍
什么是FUNCTION DECLARATION(函数声明)?
Function Declaration 可以定义命名的函数变量,而无需给变量赋值。Function Declaration 是一种独立的结构,不能嵌套在非功能模块中。
EZ:就是使用function关键字声明一个函数,再指定一个函数名,叫函数声明
什么是FUNCTION EXPRESSION(函数表达式)?
Function Expression 将函数定义为表达式语句(通常是变量赋值)的一部分。通过 Function Expression 定义的函数可以是命名的,也可以是匿名的。Function Expression 不能以“function”开头。
EZ:使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式
2.知识剖析
//函数声明
function funDeclaration(type){
return type==="Declaration";
}
//函数表达式
var funExpression = function(type){
return type==="Expression";
}
3.常见问题
两者具体有哪些区别呢?
4.解决方案
一、函数声明中函数名是必须的;函数表达式中则是可选的
//函数声明functionsum(a, b){
return a + b;
}alert(sum(1, 2));
//函数表达式vars =functionsum(a, b){
return a + b;
}alert(s(1, 2));vars =function(a, b){
return a + b;
}alert(s(1, 2));//以上两种都可以
二、用函数声明定义的函数,函数可以在函数声明之前调用,而用函数表达式定义的函数只能在声明之后调用。
//函数声明alert(sum(1,2));functionsum(a, b){returna + b; }
//函数表达式:发生错误try{alert(s(1,2));vars =functionsum(a, b){returna + b; } }catch(e) { alert("wrong!");}
5.编码实战
6.扩展思考
使用function关键字声明一个函数,再指定一个函数名,叫函数声明。
FUNCTION FN(){……}
使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式。
VAR FN=FUNCTION(){……}
使用function关键字声明一个函数,但未给函数命名,这个又称之为什么呢?是属于以上两钟类型的哪一种?
FUNCTION(){……}
匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。
7.参考文献
参考二:雨落川下雪
8.更多讨论
关于立即执行函数的讨论
PS:只有函数表达式才能实现立即执行,匿名函数也是函数表达式为何不能立即执行呢,因为匿名函数开始的function会被JavaScript引擎识别为函数声明的开始,所以加上括号也不会被执行了,而加上(),!,+,-等符号为什么就可以了呢,因为加上这些符号就可以告诉JavaScript引擎这不是函数声明了,就这么简单。
ppt链接:PPT
视频链接:视频
鸣谢
感谢大家观看
BY : 孙剑立
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
------------------------------------------------------------------------------------------------------------------------
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !
请点击链接【修真院】