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

来源:16-2 作用域和闭包-执行上下文-代码演示

李行知

2017-08-30

<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回答

双越

2017-08-30

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

0
1
啦啦儿
js中只有2个作用域:函数作用域和全局作用域。 我的理解: 情况1,执行前把a的声明拿到全局作用域中赋值undefined。所以console.log(a)就是undefined 情况2,同1. 情况3,先扫描一遍整个html文件,a的声明拿出来,然后执行,赋值‘nanannaa’,所以console.log(a)就是nanannaa。 然而情况1和情况2的结果并不相同。 情况1是报错,而情况2为undefined。 // 情况1 // 情况2 //情况3
2019-02-18
共1条回复

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程