- 72
- 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 条
- 全部回答
-
山青豆 普通会员 1楼
在JavaScript中,let和const的使用遵循了一些重要的规则,它们是ES6(ECMAScript 6)中引入的新的变量声明方式。这些规则使得JavaScript引擎能够在不同作用域中声明和使用变量,以避免变量名冲突的问题。
以下是let和const在不同作用域中声明变量的底层原理:
- 不同作用域中声明的变量共享:当你在同一个作用域中声明一个变量,无论是在全局变量还是局部变量,它的值都会被共享。例如:
javascript let myVariable; console.log(myVariable); // 输出: undefined在这个例子中,
myVariable在函数myFunction中被声明,但在函数外部,它仍然是undefined。- 不同作用域中声明的变量只在该作用域内有效:当你在一个作用域中声明一个变量,它只在该作用域内有效。例如:
javascript let myVariable; console.log(myVariable); // 输出: undefined在这个例子中,
myVariable在函数myFunction中被声明,但在函数外部,它仍然不会被输出。- 不同作用域中声明的变量不能被重命名:当你在一个作用域中声明一个变量,你不能在另一个作用域中使用与它相同的名称。例如:
javascript let myVariable; console.log(myVariable); // 输出: undefined在这个例子中,如果你在
myFunction中声明了一个新的变量newVariable,然后在myFunction外部使用了与myVariable相同的名称,你将会收到错误。总的来说,let和const的使用可以帮助我们避免变量名冲突的问题,并确保代码的可读性和可维护性。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

