面试问题
来源:10-6 webpack如何配置多入口
爱学习啦啦啦啦
2020-03-13
老师你好 我前几天面试阿里问了三个问题我没答出来 自己查了一些资料也觉得还是理解不够透彻
1.全局作用域下 window a = 1 和var a=1的区别联系
2.setinveal两次运行的时间小于设置的时间原理是什么,我知道settimeout是小于设置的时间,因为浏览器运行宏任务有4ms的延迟
3.let不能重复声明的原理
期待老师的回复!
5回答
-
第二题,setInterval 和 setTimeout 都是宏任务,小于设置时间的原理也应该都是一样的。细说原理的话,可以查一下 event loop 的执行过程。
012020-04-09 -
双越
2020-03-13
第一题,window.a = 1 和 var a = 1 的区别和联系。一个是给全局的对象 window 加一个属性,一个是定义个全局的对象。如果在一个函数中要获取自由变量 a 的话,根据作用域规则,会先去根据父级作用域,找不到则继续往上一级一级的查找(作用域链),最后找到全局作用域。如果全局作用域找不到,则去 window 下找属性。具体可以这么代码演示一下。
window.a = 1; var a = 2; window.b = 10; function fn() { console.log(a); // 2 console.log(b); // 10 } fn();
不知道我表达清楚了没有~
352022-10-09 -
慕标1126092
2021-06-13
问题1 https://blog.csdn.net/qq_43670193/article/details/115604870
00 -
amazingsbc
2020-08-12
网上看到一篇文章中提到了第二个问题。https://www.365jz.com/article/24406
00 -
双越
2020-03-13
第三题,let 不能重复声明,这是 ES6 语法的规定,所以 JS 解释器在解析语法时,会检查的一个错误。其实 var 能重复声明,let 不能重复声明,这就是一个语法规定。然后解释器按照语法执行规则检查。
我们知道,在一个 JS 作用域(如函数)执行的时候,没声明一个变量,都会存入栈中。var 能重复声明,也就是每次声明都覆盖栈的内容为新内容。let 不能重复声明,也就是检查到栈里有这个变量,就不然覆盖了。
说白了,还是个规则。
00
相似问题