【发布时间】:2021-10-19 23:29:38
【问题描述】:
这里是Javascript新手。 来自https://www.freecodecamp.org/news/var-let-and-const-whats-the-difference/ :
- 它们都被吊到了其范围的顶部。但是虽然 var 变量用 undefined 初始化,let 和 const 变量是 未初始化。
- 虽然 var 和 let 可以声明而不是 已初始化,const 必须在声明期间初始化。
所以“const”很明显它被初始化为它最初声明的值。
“变量”:
a) not declared, initialized as undefined
b) declared, initialized accordingly
“让”:
a) not declared, initialized as ______???______
b) declared, initialized accordingly
什么是“let”初始化,就好像它一开始没有声明一样?
【问题讨论】:
-
"什么是 "let" 初始化,就好像它一开始没有声明一样?" 什么都没有。它无法使用。如果您尝试读取或写入该变量,您将进入the temporal dead zone 并且您会收到错误消息。另见:Are variables declared with let or const hoisted?
-
请注意,虽然“用 let 和 const 声明的变量也会被提升”,“直到它们被初始化的那一行被执行,任何访问这些变量的代码都会抛出异常”。 developer.mozilla.org/en-US/docs/Glossary/Hoisting
-
我的建议:1) 永远不要使用
var。如果可能,将其从现有代码中重构出来。 2) 如果值不会改变,请始终使用const。例如,如果您创建一个数组以稍后将元素推入其中,则该数组仍然可以是const,因为它是一个不会更改的引用。 3) 仅当您确定变量会更改时才使用let。例如,for 循环索引。 4) 将const和let声明放在尽可能靠近它们使用的位置,就像在其他编程语言中一样,并且忘记它们的提升。 -
(续)如果某些代码在声明之前尝试使用它们,您将在运行时收到错误消息。 5) 使用 JSDoc 类型提示或 TypeScript。 JSDoc 可以在 Visual Studio Code 等编辑器中创造奇迹,因为编辑器会显示每个与类型相关的错误,即使在纯 JavaScript 代码中也是如此。此外,编辑器将在声明之前显示何时使用值,因此您根本不必考虑提升。
标签: javascript variables initialization declare let