采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
<script> var s = 1; a(); function a() { alert("a"); } a(); var a = function() { alert("aa"); } a(); </script> <script> a(); alert(s); </script>
这里两端script脚本,但是第二段可以取到第一端定义好的值,a()和ss
而如果是一个script脚本就是一个作用域,那么第一个脚本的变量应该无法作用在第二个上面,这里应该有问题。
js只有两个作用域——全局作用于和函数作用域,本来就没说 <script> 是一个作用域
js中只有2个作用域:函数作用域和全局作用域。 我的理解: 情况1,执行前把a的声明拿到全局作用域中赋值undefined。所以console.log(a)就是undefined 情况2,同1. 情况3,先扫描一遍整个html文件,a的声明拿出来,然后执行,赋值‘nanannaa’,所以console.log(a)就是nanannaa。 然而情况1和情况2的结果并不相同。 情况1是报错,而情况2为undefined。 </body> // 情况1 <script type="text/javascript"> console.log(a); </script> <script> var a ="nanannaa" </script> // 情况2 <script> console.log(a); var a ="nanannaa" </script> //情况3 <script> var a ="nanannaa" </script> <script type="text/javascript"> console.log(a); </script>
登录后可查看更多问答,登录/注册
BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率
950 19
936 17
1.1k 11
1.1k 10
1.0k 10