Javascript 中已声明但未初始化的变量会发生什么情况?它有价值吗?

Rob*_*nig 6 javascript

在Javascript中,我可以做

> var foo;
< undefined
> foo;
< undefined
Run Code Online (Sandbox Code Playgroud)

表明在 Javascript 中,声明的未初始化变量始终是undefined。但他们是吗?或者它们可以像 C 中那样采用随机垃圾值吗?

MDN 的 var 文档没有帮助。

Ale*_*det 5

它们不会采用随机垃圾值,如果没有分配值,它将保持“未定义”状态。

这使得可以检查对象是否已被分配:来自MDN

function test(t) {
  if (t === undefined) {
     return 'Undefined value!';
  }
  return t;
}

var x;

console.log(test(x));
// expected output: "Undefined value!
Run Code Online (Sandbox Code Playgroud)

尚未赋值的变量的类型为未定义。如果正在计算的变量没有分配的值,则方法或语句也会返回 undefined。如果未返回值,则函数将返回未定义。