前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数声明与表达式的区别

函数声明与表达式的区别

作者头像
HTML5学堂
发布2018-03-12 17:44:51
7530
发布2018-03-12 17:44:51
举报
文章被收录于专栏:HTML5学堂HTML5学堂

HTML5学堂:函数有不同的定义方法,一种是函数声明,另一种是函数表达式,那么这两种有何区别呢?

函数声明的基本语法

代码语言:javascript
复制
function functionName(arg0, arg1, ..., argn) {
    // 函数体 - HTML5学堂
}

函数声明的重要特征:函数声明提升

在执行代码之前,会先读取函数声明,这也就意味着,可以把函数声明放在调用它的语句的后面。

函数表达式的常见语法形式

代码语言:javascript
复制
var functionName = function(arg0, arg1, ..., argn) {
    // 函数体 - HTML5学堂
};

如何理解上面这段代码呢?创建一个匿名函数(也叫拉达姆函数),并将整个函数赋值给变量functionName

在执行这句代码之前,是不能够实现functionName()函数的调用的,函数表达式和其他表达式一样,都需要在使用前赋值。

经典案例

此段代码合法

代码语言:javascript
复制
var say;
if(conditions) {
    say = function () { console.log('函数表达式-代码合法'); }
} else {
    say = function () { console.log('H5course'); }
}

此段代码不合法

代码语言:javascript
复制
if(conditions) {
    function say() { console.log('函数声明-不合法代码'); }
} else {
    function say() { console.log('HTML5学堂'); }
}

拓展性知识

在使用函数声明创建函数时,对于非IE浏览器,会为函数定义一个非标准的name属性,可以通过name属性访问到给函数指定的名字。而采用函数表达式所定义的函数,name属性为空字符串。如下:

代码语言:javascript
复制
function h5course() {};
console.log(h5course.name);
var h5 = function(){};
console.log(h5.name);

此段代码中,前者会打印h5course,但是后者只会输出空字符串

写在最后的一些话:关于此方面知识的理解,会涉及到“预编译与执行”,想了解此方面知识的童鞋可以查看——>《JavaScript 运行机制之执行顺序详解》

HTML5学堂小编-利利。耗时:1.5h

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 懂点君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数声明的基本语法
    • 函数声明的重要特征:函数声明提升
    • 函数表达式的常见语法形式
    • 经典案例
    • 拓展性知识
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档