JS——变量提升与函数提升

今天我们来学习一下JS特殊的变量提升属性与函数提升属性

变量提升

先举一个例子吧,我在定义变量a之前调用它,控制台没有报错,但是弹框显示undefined。

<script type="text/javascript">
	alert(a);
	var a=1;
</script>

 以上情况出现的原因是JS的变量提升机制,将变量定义提升到了所在块最开始的地方,相当于下面代码

<script type="text/javascript">
    var a;
    alert(a);
    a=1;
</script>

因此弹框的时候不会报错,但是a没有值

 

函数提升

函数提升基本类似,将函数的定义提升到JS块的最开始部位

<script type="text/javascript">
	a();
	function a(argument) {
		alert(1);
	}
</script>

相当于

<script type="text/javascript">
	function a(argument) {
		alert(1);
	}
	a();
</script>

所以基于函数提升的情况下,以下这种写法就会出现error

<script type="text/javascript">
	a();
	var a=function () {
		// body...
		alert(1);
	}
</script>

显示a不是一个函数。

总结

虽然JS有变量提升机制,不过写代码的时候还是尽量规范编写,避免定义隐式函数可能出现的错误

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值