JavaScript中的变量提升机制

我们都知道JavaScript是一门比较 “神奇” 的语言,为什么这么说呢?因为它的一些原理是我们所不能直接理解的,今天就讲下一个关于JavaScript的一个 “神奇” 原理——变量提升。

首先,我们看下面的一段代码:

showName()
console.log(myname)
var myname = '这是个神奇的语言'
function showName () {
   
	console.log('看,JavaScript运行了')
}

使用过JavaScript开发的程序都知道,JavaScript是顺序执行的。若按照这个逻辑来理解的话,那么:

  • 当执行到第一行代码的时候,由于函数showName()还没有定义,所以执行应该报错;
  • 同样执行第2行的时候,由于变量myname也未定义,所以同样也会报错

然后实际的执行结果是:
在这里插入图片描述
第1行输出了 “看,JavaScript运行了”,第2行输出了undefined,这个前面想像中的顺序执行有点不一样啊。

那么怎么理解呢?

通过上面的执行结果,你应该知道了函数或者变量可以在定义之前使用,那如果使用没有定义的变量或者函数,JavaScript代码还能继续执行吗?我们来实验一下:

showName()
console.log(myname)
function showName() {
   
	console.log('看,报错了')
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值