JS中的函数提升和变量提升

变量提升和函数提升:就是将变量声明或者函数全部代码提升到当前作用域(全局作用域或函数作用域)最开始的部分。

JavaScript中函数域为最小域范围;for循环、while循环、if语句、switch语句的“{}”不是作用域。

注意:这里指的是ES6之前。

一、变量提升

1.所指的形式:var variable = '提升';(必须有关键字'var')。

2.提升的方式:将“var variable;”提升到当前作用域的顶部;“variable='提升'”在原先定义的位置。

3.具体代码:

console.log(variable);
var variable = '我是全局中的变量';
console.log(variable);

function fn (){
  console.log(interiorVariable);
  var interiorVariable = '我是函数内的变量';
  console.log(interiorVariable);
}

fn();

//变量提升执行顺序
/*
var variable;   //变量提升,全局作用域范围内,此时只是声明,并没有赋值
console.log(variable);    //undefined
variable = '我是全局中的变量';    //此时才赋值
console.log(variable);    //我是全局中的变量

function fn () {
  var interiorVariable;   //变量提升,函数作用域范围内
  console.log(interiorVariable);    //undefined
  interiorVariable = '我是函数内的变量';    //此时对局部变量进行赋值
  console.log(interiorVariable);    //我是函数内的变量
}*/

二、函数提升

1.函数提升所指的形式:function fn(){......};(必须是函数声明的形式,不能是函数表达式的形式)。

2.函数提升的方式:将“function fn(){......}”整个函数声明代码块提升到当前作用域的顶部,原先位置以不存在该代码。

console.log(f1);    //函数提升,整个代码块提升到文件的最开始<br>
f1();
console.log(f2);

function f1(){
  console.log('我是函数f1。。。');
}
var f2 = function () {
  console.log('我是函数f2。。。');
};

(function () {
  console.log('closure');
  a = 'aaa';
  var a = 'bbb';
  console.log(a);
})();

//函数提升的执行过程
/*
function f1(){
  console.log('我是函数f1。。。');
}
var f2;

console.log(f1);
f1();

f2 = function(){
  console.log('我是函数f2。。。');
}*/
参考文章:https://www.cnblogs.com/kawask/p/6225317.html


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值