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

在Javascript中,函数及变量的声明都将被提升到函数的最顶部,也就是说我们可以先使用后声明,
但函数表达式和变量表达式只是将函数或者变量的声明提升到函数顶部,函数表达式和变量的初始化将不被提升

var js=function(){} 这种叫做函数表达式 必须先定义后使用

function js(){}这种是函数声明 可以先使用后定义 它会对函数的声明进行一个提升

举个例子

1

2

3

4

fun();//hello,world哥

function fun(){    

    console.log("hello,world哥");

}

方法先使用后声明这显然是没有问题的、那么我们接着看函数表达式

1

2

3

4

var fun=function(){

    console.log("本事啦,我的弟");

}

fun();//本事啦,我的弟

显然没有任何问题,我们把声明和使用颠倒位置

1

2

3

4

fun();

var fun=function(){

    console.log("本事啦,我的弟");//Uncaught TypeError: fun is not a function

}

我们发现报错了,但如果我们直接使用fun则会报一个”Uncaught ReferenceError: fun is not defined”的错误(和不声明fun报错是不一样的),其实fun也是一个变量,只不过他是function(){console.log(“本事啦,我的弟”);}的一个引用,fun的声明被提升了,但是初始化没有被提升。

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

1

2

3

4

5

6

var a=1;

(function(){    

    console.log(a); 

    var a=2;    

    console.log(a);

})();

大家认真的思考一下、打印结果是什么?
正确答案:undefined 2 大家应该想的是1,2 其实这个结果就是变量提升的原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值