JavaScript 变量的提升以及var对变量的提升

JavaScript声明过的变量提升往往会影响到我们对变量的正常获取,所以特写此文,以便以后使用  。

 

一  那么什么是变量提升呢

      js中定义变量的两种:(注意在方法外不加var是不能定义变量的,出现 xxx is not defined)

 

  1. 都加var,在方法内则是局部变量,在方法外则是全局变量。
  2. 在方法内,加var为局部变量,不加var则是全局变量(在执行当前方法之后) 
<script type="text/javascript">
   //变量声明的提升
   function text1(){
	   var a = "1";
	   var b = "3";
	   var c = function(){};
	   var d = "4";
   }
   
 //上述代码等价于
   function text2() {
	    var a,b,c,d;
	    a = "1";
	    b = "2";
	    c = function(){};
	    d = "3";
	}
</script>

 

变量提升案例

案例1

由于test1函数里面定义了变量a,由于

var a = 'I\'m a in all'

function test1 () {
    console.info(a)
    console.info(window.a)

    var a = 'I\'m a in test1'
    console.info(a)
}
    
test1()
上述代码相当于
var a = 'I\'m a in all'

function test1 () {
    var a
    console.info(a)            // undefined
    console.info(window.a)    // I'm a in all(因为window指的是全局环境)

    a = 'I\'m a in test1'
    console.info(a)           // I'm a in test1
}
    
test1()

 案例2


var a = 'I\'m a in all'

function test2 () {
    console.info(a) // I'm a in all

    a = 'I\'m a in test2'      // 这里原本就是赋值,所以上边的a会输出全局变量
    console.info(a)            //  I'm a in test2
}

 案例3

function test3 () {
    console.info(a) // 报错(Uncaught ReferenceError: a is not defined)

    a = 'I\'m a in test3' // 这里本来就是赋值,所以上边的a会输出全局变量
    console.info(a) // I'm a in test3
}

test3()

console.info(a) // I'm a in test3(本来没有全局变量a,当test3运行时,定义了一个全局变量a,所以这里会输出)

 

最终页面展示:

sa

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值