请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

执行上下文以一段script为作用域应该是个错误的吧

<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脚本就是一个作用域,那么第一个脚本的变量应该无法作用在第二个上面,这里应该有问题。

正在回答

1回答

js只有两个作用域——全局作用于和函数作用域,本来就没说 <script> 是一个作用域

0 回复 有任何疑惑可以回复我~
  • 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>
    回复 有任何疑惑可以回复我~ 2019-02-18 19:58:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信