请稍等 ...
×

采纳答案成功!

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

面试问题

老师你好 我前几天面试阿里问了三个问题我没答出来 自己查了一些资料也觉得还是理解不够透彻
1.全局作用域下 window a = 1 和var a=1的区别联系
2.setinveal两次运行的时间小于设置的时间原理是什么,我知道settimeout是小于设置的时间,因为浏览器运行宏任务有4ms的延迟
3.let不能重复声明的原理
期待老师的回复!

正在回答

5回答

第二题,setInterval 和 setTimeout 都是宏任务,小于设置时间的原理也应该都是一样的。细说原理的话,可以查一下 event loop 的执行过程。

0 回复 有任何疑惑可以回复我~
双越 2020-03-13 22:41:47

第一题,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();

不知道我表达清楚了没有~

3 回复 有任何疑惑可以回复我~
  • 还有一个区别:
    ```js
    // 使用var声明
    var a = 1;
    Object.getOwnPropertyDescriptor(window, 'a');
    // {value: 1, writable: true, enumerable: true, configurable: false}
    
    
    // 不使用
    b = 2;
    Object.getOwnPropertyDescriptor(window, 'b');
    // {value: 2, writable: true, enumerable: true, configurable: true}
    ```
    变量声明自带不可删除属性,前者是变量声明,带不可删除属性,因此无法被删除;
    后者为全局变量的一个属性,因此可以从全局变量中删除。
    回复 有任何疑惑可以回复我~ 2020-06-19 14:41:41
  • 老师“如果全局作用域找不到,则去 window 下找属性”这句话有问题吧
    
    老师的代码调换一下声明顺序:
    var a = 2;
    window.a = 1;
    window.b = 10;
     
    function fn() {
        console.log(a); // 1
        console.log(b); // 10
    }
    fn();
    
    如果是全局作用域找不到,则去 window 下找属性,那应该输出不变
    回复 有任何疑惑可以回复我~ 2020-06-24 16:29:39
  • window.a === a,给window.a赋值,var a的值也会变吧
    回复 有任何疑惑可以回复我~ 2021-06-09 23:11:29
慕标1126092 2021-06-13 12:06:02

问题1 https://blog.csdn.net/qq_43670193/article/details/115604870

0 回复 有任何疑惑可以回复我~
amazingsbc 2020-08-12 16:48:14

网上看到一篇文章中提到了第二个问题。https://www.365jz.com/article/24406

0 回复 有任何疑惑可以回复我~
双越 2020-03-13 22:46:14

第三题,let 不能重复声明,这是 ES6 语法的规定,所以 JS 解释器在解析语法时,会检查的一个错误。其实 var 能重复声明,let 不能重复声明,这就是一个语法规定。然后解释器按照语法执行规则检查。

我们知道,在一个 JS 作用域(如函数)执行的时候,没声明一个变量,都会存入栈中。var 能重复声明,也就是每次声明都覆盖栈的内容为新内容。let 不能重复声明,也就是检查到栈里有这个变量,就不然覆盖了。

说白了,还是个规则。

0 回复 有任何疑惑可以回复我~

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信