如何处理JS中Hoisting导致的未定义错误

问题描述

最近接触到了Hoisting的概念,Js在执行之前把所有的变量和函数都安排在程序的顶部。但是我遇到了一个问题,就像我在声明一个变量之前执行它一样。它会导致 undefined 错误,或者您可以说它是提升到该变量所给出的初始值。但是在给它赋值后仍然给出同样的错误

console.log(aVar); // undefined
console.log(aLet); // causes ReferenceError: aLet is not defined
var aVar = 1;
let aLet = 2;

有什么我遗漏或不知道的东西,比如在这里提升的意义是什么。我想知道在不获取未定义值的情况下使用提升的正确方法是什么。

解决方法

这里提升的意义是什么?

向您提供错误消息,而不是在 uninitialised variables 上静默失败。

一般来说,hoisting lets you declare functions that reference the hoisted variables

如何处理未定义的错误?

修复代码中的错误,将 log 语句放在要记录的值的创建之后:

let aLet = 2;
console.log(aLet); // 2

或者如果您想要获得 undefined,请在使用前将声明向上移动:

let aLet; // or: let aLet = undefined;
console.log(aLet); // undefined
aLet = 2;