前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >var fn = function(){ }和function fn() { }有什么区别

var fn = function(){ }和function fn() { }有什么区别

作者头像
德顺
发布2019-11-12 16:57:02
1.9K0
发布2019-11-12 16:57:02
举报
文章被收录于专栏:前端资源前端资源
var fn = function(){ }和function fn() { }有什么区别 HTML笔记 第1张
var fn = function(){ }和function fn() { }有什么区别 HTML笔记 第1张

在 Javascript 中,函数及变量的声明都将被提升到函数的最顶部,也就是说我们可以先使用后声明

函数表达式和变量表达式只是将函数或者变量的声明提升到函数顶部,函数表达式和变量的初始化不会被提升

var fn = function(){ } 这种叫做函数表达式,必须先定义后使用。 function fn () { } 这种是函数声明,可以先使用后定义,它会对函数的声明进行一个提升。

举个例子:

方法先使用后声明,是没有问题的:

代码语言:javascript
复制
fun();
function fun(){
    console.log("hello,www.w3h5.com");
}

那么我们接着看函数表达式:

代码语言:javascript
复制
var fun = function(){
    console.log("前端资源网");
}
fun();

以上是没有任何问题的,我们把声明和使用颠倒位置:

代码语言:javascript
复制
fun();
var fun = function () {
    console.log("前端资源网");
}

控制台报错:Uncaught TypeError: fun is not a function

var fn = function(){ }和function fn() { }有什么区别 HTML笔记 第2张
var fn = function(){ }和function fn() { }有什么区别 HTML笔记 第2张

和不声明 fun 报错是不一样的,其实 fun 也是一个变量,只不过他是 function () { console.log(“前端资源网”);} 的一个引用,fun 的声明被提升了,但是初始化没有被提升。

再给大家来一个比较有趣的关于提升的例子:

代码语言:javascript
复制
var a = 1;
(function () {
    console.log(a);
    var a = 2;
    console.log(a);
})();

正确答案:

代码语言:javascript
复制
undefined
2

大家可能想的是 1,2 其实这个结果就是变量提升的原因。

参考文档:

var js=function(){}和function js(){}的区别

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档