老师我问个题目

来源:2-22 编程练习

永远都在永远前进

2020-07-16 11:55:43

{

    function foo(){


    }

     foo = 1;

    function foo(){


    }

     foo = 2;

}

    console.log(foo);

为什么浏览器最后会打印1

我不明白大括号有什么用,加上和去掉结果不一样

写回答

1回答

好帮手慕糖

2020-07-16

同学你好,关于你的问题,回答如下:

1、这里大括号是ES6中的块级作用域,到第四阶段ES6中会有学习哦。

2、在没有块级作用域的时候,从上到下安装顺序执行,下面的会将上面的替换。最后输出了2。

3、同学问的这个是个很有意思的题,不过解决这个题需要先了解一些知识哦。

(1)块级作用域中函数在编译阶段将函数声明提升到全局作用域,挂载到window上。

(2)块级作用域外,最后访问的值,是全局的值,是window上的。

(3)这里有涉及到预加载,代码在执行前,会先预加载。预加载的过程中函数会进行提示。

目前我们这些知识还没有学习,对于这个题在理解上可能会有些难度。老师在代码中添加了注释,同学可以先结合了解下,目前阶段我们可能用不到这些内容哦,可以等学习了后面的这些知识(预解析、块级作用域等)之后,再来回顾下哦。

http://img1.sycdn.imooc.com/climg/5f0ff402098fb07f14270708.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

1

0 学习 · 40143 问题

查看课程