Javascript Hoisting( 变量提升)

本文深入解析JavaScript中的变量提升(Hoisting)概念,解释了变量声明如何被提升至作用域顶部,而变量初始化则保持原有顺序。通过具体示例展示了变量提升在实际编程中的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Javascript Hoisting( 变量提升)

先理解Javascript Hoisting的概念。

Javascript Hoisting:In javascript, every variable declaration is hoisted to the top of its declaration context.

我的理解就是在Javascript语言中,变量的声明(注意不包含变量初始化声明var name,初始化就是赋值 name=2)会被提升(置顶)到声明所在的上下文,也就是说,在变量的作用域内,不管变量在何处声明,都会被提升到作用域的顶部,但是变量初始化的顺序不变。


 var myvar = '变量值'; 
    (function() { 
      console.log(myvar); // undefined 
      var myvar = '内部变量值'; 
     })(); 

输出的的是undefined。


因为它等价于

 var myvar = '变量值'; 
    (function() { 
       var myvar;
      console.log(myvar); // undefined 
       myvar = '内部变量值'; 
     })(); 

在函数内把定义的变量的声明放在最开始的位置了。当时只声明没有定义,所以是undefined。


1     //测试代码----------------------
2     var myvar = '变量值'; 
3     (function() { 
4       console.log(myvar); // ?
5       myvar = '内部变量值'; 
6     })();

输出的是变量值




再看两个例子

var foo = 1;
function bar() {
	if (!foo) {
		var foo = 10;
	}
	alert(foo);
}
bar();
输出的是10.


var a = 1;
function b() {
	a = 10;
         alert(a)--------输出的是10
	return;
	function a() {}
}
b();
alert(a);-----输出的是1
输出的是1



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值