为了账号安全,请及时绑定邮箱和手机立即绑定

下图中的这段脚本执行顺序是怎样的?为什么a未定义?

下图中的这段脚本执行顺序是怎样的?为什么a未定义?

samdeo 2016-10-20 21:00:09
查看完整描述

2 回答

?
堂堂堂堂糖糖糖童鞋

TA贡献101条经验 获得超58个赞

//img1.sycdn.imooc.com//58096b3900019ce807270426.jpg

知道一个概念:变量声明提升,通过var 声明的变量会放到全局作用域的顶部,也就是相当于:

<script>


var a = 1;//在这里声明,加入不是第一行
</script>

//相当于

<script>
var a = undefined;

a = 1;//赋值
</script>

这样是不会报错的,a的值为。而你的这种情况,没有通过var 定义 a,不存在变量提升,那么在第一个`<script></script>`中没有定义a,而使用了a,就会报引用错误:"Uncaught ReferenceError: a is not defined"。

解决方式:在

scriptTag.text = 'var b=1;var k=a+b;';

中添加a的声明,像这样:

scriptTag.text = 'var b=1;var a = 1;var k=a+b;';//推荐
//或者不使用var 声明a
scriptTag.text = 'var b=1;a = 1;var k=a+b;';//不推荐
查看完整回答
1 反对 回复 2016-10-21
?
慕田峪3555374

TA贡献137条经验 获得超18个赞


js是按你书写顺序来执行的,而你那个a=1是在k=a+b之后才声明的,这样他就找不到a,所以才会报a未定义,要把a=1移到k=a+b之前就可以了

查看完整回答
反对 回复 2016-10-21
  • 2 回答
  • 0 关注
  • 1684 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信