变量声明提升和函数声明提升

本文详细解释了JavaScript中的变量声明提升及函数声明提升的概念,并对比了函数声明与函数表达式的区别,帮助理解JavaScript的执行机制。

 

 一道面试题被虐惨了 看了书看了资料整理的 不记得看了谁的文章了 这是整理后 有部分一样的不要打我//

 


 变量声明提升

 

<!DOCTYPE html>
<html>
<head><script>
var i = 20;
function n(){
    alert(i);
};
n();
</script>
</head>
</html>   //结果是20
<!DOCTYPE html>
<html>
<head><script>
var i = 20;
function n(){
    alert(i);
    var i = 50;
};
n();
</script>
</head>
</html>   //结果是undefined

 

↑变量声明提升会把变量声明提前,但是变量初始化还在后面,如果在变量初始化前面输出,变量还未初始化,就会alert出undefined,这是变量声明提升。

 

 

函数声明提升是在执行代码之前会读取函数声明。可以把函数声明放在调用他的语句后面。

函数声明是把一个函数值赋值给了变量,所以可以进行函数声明提前。函数表达式是一个表达式是把函数对象赋值给了变量,所以不能进行函数声明提前。

 

 

函数表达式和函数声明的区别:

函数声明格式
function(arg0,arg1,arg2){
    //函数体
} 
函数表达式格式
var functionName = function(arg0,arg1,arg2){
    //函数体
}

1、函数声明必须有标识符,也就是函数名,函数表达式可以省略函数名。

2、函数声明提升,可以把函数声明放在调用他的语句后面。函数表达式不可以,会报错。

3、函数声明语句可以出现在全局代码中,或者内嵌在其他函数中,不能出现在循环、条件判断或者try/finally以及with语句中。

转载于:https://www.cnblogs.com/Narcotic/p/6233136.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值