猿问

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

samdeo
浏览 1744回答 2
2回答

堂堂堂堂糖糖糖童鞋

知道一个概念:变量声明提升,通过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;';//不推荐

慕田峪3555374

js是按你书写顺序来执行的,而你那个a=1是在k=a+b之后才声明的,这样他就找不到a,所以才会报a未定义,要把a=1移到k=a+b之前就可以了
随时随地看视频慕课网APP
我要回答