js函数提升及变量提升理解

首先我们需要理解什么是提升,在我们的js中,代码的执行时分两步走的,1、解析 2、一步一步执行

那么变量提升就是变量声明会被提升到作用域的最顶上去,也就是该变量不管是在作用域的哪个地方声明的,都会提升到作用域的最顶上去,同样函数提升也是这个道理。

1 变量提升

function test() {
   console.log(a);
   var a = 10;
}
test();//undefined

由于存在变量提升,在解析的时候a还未赋值所以出现输出undefined结果,上述代码执行过程实际上是这样:

function test() {
   var a;
   console.log(a);
   a = 10;
}
test();//undefined

2 函数提升

在js中声明函数有函数声明式和函数表达式,下面是各种声明函数的对比:

// 函数声明
function foo() {
   console.log('function declaration');
}

// 匿名函数表达式
var foo = function () {
   console.log('anonymous function expression');
};

// 具名函数表达式
var foo = function bar() {
   console.log('named function expression');
};

在此处我们需要记住的是只有函数声明式的函数存在提升,并且也将此函数的代码块一块提升,其他的函数声明方式,只是把foo变量进行了提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值