账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    面试被问到:let不能在相同作用域重复声明的底层原理是什么?
    11
    0
    面试的时候问到老生常谈的问题:var、let和const声明的区别我回答:① var声明的变量会绑定到window对象中,而let和const声明的变量不会② var声明的变量只有全局和函数作用域,而let和const声明的变量具有块级作用域③ var声明的变量可以提前访问,而let和const声明的变量不能提前访问(暂时性死区)④ var声明的变量可以重复声明,而let和const声明的变量不能重复声明⑤ const声明的基础类型不可修改,const声明的引用类型只能修改该引用类型的属性而不能给该变量重新赋值面试官接着问我,let不能在相同作用域重复声明的底层原理是什么?谈谈编译过程中发生了?我知道var声明只有全局作用域和函数作用域两种,在编译过程声明会被提升到当前作用域顶部,会忽略后面的重复声明,如果重复使用的一个声明有一个初始值,那么它担当的不过是一个赋值语句的角色,如果重复使用的一个声明没有一个初始值,那么它不会对原来存在的变量有任何的影响但是对于let我真不知道为什么,跟执行上下文中let声明存储在词法环境组件中未初始化unitialized有关吗?但是我使用let重复声明两个相同的变量,没有访问也会报错啊,网上没有查到相关的资料,ECMA文档看不懂啊(谷歌翻译不能看)面试官说做一个合格的javaScript开发者一定要掌握编程语言的基础原理。。。求教大家了!如果有相关的资料分享一下,顿首!!!
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答