IT修真院-前端技术干货让前端飞

函数表达式和函数声明有什么区别?

2017-08-19  本文已影响0人  礁石不会飞

大家好,我是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免费指导。快来与我一起学习吧 !

请点击链接【修真院

上一篇 下一篇

猜你喜欢

热点阅读