繁体   English   中英

Javascript var/let/const 变量初始化

[英]Javascript var/let/const variable initialization

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<\/strong>如果声明且未初始化,则其默认值设置为undefined<\/strong> 。

let x;
console.log(x);

>> undefined

好吧,考虑它的最简单方法是只有一种类型的未声明变量(在从未声明的意义上,否则你只会得到一个ReferrenceError )。 如果它从未被声明,JavaScript 引擎就不能选择使其成为varletconst来满足开发人员的需要。

因此,任何从未声明使用的变量都会变成var 并且var被初始化为undefined

注意:似乎有人不同意,但没有花时间解释原因。 我很高兴了解我的错误并提高我的知识。

提升的let变量使用特殊的“值”进行初始化,该值在访问时会引发ReferenceError

function foo() {
    console.log(x)  // ReferenceError: Cannot access 'x' before initialization
    let x
}

foo()

let 和 const 声明定义了范围为正在运行的执行上下文的 LexicalEnvironment 的变量。 在评估变量的 LexicalBinding 之前,不得以任何方式访问变量 ...。

https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-let-and-const-declarations

嗨,你可以试试这个网站 pretagteams.com,你会更好地了解声明 JavaScript 变量:var、let、const

例如:

var example = "hello";
document.write(example); // it will say hello when it runs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM