问题描述
最近接触到了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;