老师我问个题目
来源:2-22 编程练习
永远都在永远前进
2020-07-16 11:55:43
{
function foo(){
}
foo = 1;
function foo(){
}
foo = 2;
}
console.log(foo);
为什么浏览器最后会打印1
我不明白大括号有什么用,加上和去掉结果不一样
1回答
同学你好,关于你的问题,回答如下:
1、这里大括号是ES6中的块级作用域,到第四阶段ES6中会有学习哦。
2、在没有块级作用域的时候,从上到下安装顺序执行,下面的会将上面的替换。最后输出了2。
3、同学问的这个是个很有意思的题,不过解决这个题需要先了解一些知识哦。
(1)块级作用域中函数在编译阶段将函数声明提升到全局作用域,挂载到window上。
(2)块级作用域外,最后访问的值,是全局的值,是window上的。
(3)这里有涉及到预加载,代码在执行前,会先预加载。预加载的过程中函数会进行提示。
目前我们这些知识还没有学习,对于这个题在理解上可能会有些难度。老师在代码中添加了注释,同学可以先结合了解下,目前阶段我们可能用不到这些内容哦,可以等学习了后面的这些知识(预解析、块级作用域等)之后,再来回顾下哦。
如果我的回答帮助了你,欢迎采纳,祝学习愉快~
相似问题