function sayHi() { console.log(name); console.log(age); var name = "Lydia"; let age = 21; } sayHi();
A: Lydia
和 undefined
B: Lydia
和 ReferenceError
C: ReferenceError
和 21
D: undefined
和 ReferenceError
在函数中,我们首先使用var
关键字声明了name
变量。 这意味着变量在创建阶段会被提升(JavaScript
会在创建变量创建阶段为其分配内存空间),默认值为undefined
,直到我们实际执行到使用该变量的行。 我们还没有为name
变量赋值,所以它仍然保持undefined
的值。
使用let
关键字(和const
)声明的变量也会存在变量提升,但与var
不同,初始化没有被提升。 在我们声明(初始化)它们之前,它们是不可访问的。 这被称为“暂时死区”。 当我们在声明变量之前尝试访问变量时,JavaScript
会抛出一个ReferenceError
原文:https://www.cnblogs.com/wang715100018066/p/11082033.html