js中函数声明和函数表达式的区别

函数声明:在js解析的时候进行函数提升,所以在同一个作用域内,不管函数声明在哪里定义,该函数都可以调用;

函数表达式:在js运行时确定,并且在表达式执行完之后才可以调用;

一、调用方式:通过俩段代码来更直观的描述:

//函数声明
funDeclaration('前——调用');
function funDeclaration(value){
    console.log('当前执行的是:',value);
    //当前执行的是: 前——调用
    //当前执行的是: 后——调用
}
funDeclaration('后——调用');

通过上述代码可以看出,在声明之前和之后调用,都可以成功执行到,这得益与函数声明在js解析的时候就进行了函数的提升,所以在同一个作用域里面,不管在哪里声明函数都可以执行到;

//函数表达式
funExpression('前——调用');//error
var funExpression=function(value){
    console.log('函数表达式当前执行的是:',value);
}
funExpression('后——调用');//函数表达式当前执行的是: 后——调用

通过上述代码可以看出,在函数表达式声明之前调用,会报错,在表达式声明之后可以成功执行,这是因为函数表达式在js运行时才可以确认,并且在赋值结束之后才可以调用;

二、自执行函数的差别:

函数表达式的自执行函数不需要用()来包裹函数体

//函数表达式的自执行函数
var fun1=function(value){
    console.log('函数表达式当前执行的是:',value);
    //函数表达式当前执行的是: 函数表达式的自执行函数
}('函数表达式的自执行函数');

函数声明的自执行函数需要用()来包裹函数体

//函数声明的自执行函数
(function fun2(value){
    console.log('函数表达式当前执行的是:',value);
    //函数表达式当前执行的是: 函数声明的自执行函数
})('函数声明的自执行函数');

上述就是常见的俩者的区别,如果有遗漏很错误,希望大家及时指出!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值