微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 JavaScript 不能提升初始化?

如何解决为什么 JavaScript 不能提升初始化?

我现在正在研究起重概念,但我不明白为什么 提升只能用于声明,不能用于初始化。

声明 O

catName("cat");

function catName(name){
  console.log(name) // return cat
}

初始化 X

console.log(num); // return undefined
var num;
num = 6;

解决方法

...为什么提升只能用于声明,不能用于初始化

可以与初始化一起工作(实际上,var 变量已初始化——其值为 {{1 }}),只是没有为 undefined 定义提升初始化表达式。为函数声明定义了提升初始化:函数的绑定(松散地,变量)被声明并且用函数对象初始化:

var

只是 console.log(example); // Shows the function function example() { } 不是这样定义的,尤其是因为提升初始化表达式(而不是 var)会比提升函数标识符的初始化复杂得多,因为 {{ 1}} 初始值设定项可以是任意表达式。因此,undefined 变量用 var 初始化。

快进几年,varundefinedlet 的初始化根本没有提升(只有声明),导致我们进入 Temporal Dead Zone您无法访问它们的声明和初始化,因为这被认为比提升 const 更有用:

class

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。