在Javascript中声明的,未初始化的变量会发生什么?它有价值吗?

时间:2018-06-01 09:51:23

标签: javascript-objects

在Javascript中,我可以做到

> var foo;
< undefined
> foo;
< undefined

建议在Javascript中,声明的未初始化变量始终是 undefined 。但是他们呢?或者他们可能会像C一样随机获取垃圾值吗?

MDN's var docs没有帮助。

2 个答案:

答案 0 :(得分:2)

在javascript中,任何尚未分配值的属性都会被指定为Undefined type。你需要分开两件事来理解它,ECMA-262 Standard有两个未定义的“事物”:

  • 4.3.9未定义的值
  • 4.3.10未定义类型

undefined value =&gt;唯一值为未定义值的类型

undefined =&GT; 原始值,如果尚未为变量赋值

因此,在您的情况下,变量已初始化,并且已分配 DefaultLabelFormatter值。

javascript中的 preoteive value 定义为:

  

4.3.2原始值

     

Undefined,Null,Boolean之类型的成员,   第8条中定义的数字或字符串

     

注意:原始值是直接表示的基准值   最低级别的语言实现。

答案 1 :(得分:1)

他们不会获取随机垃圾值,如果没有分配值,它将保持&#34;未定义&#34;。

这样可以检查是否已分配了一个对象: 来自MDN

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

var x;

console.log(test(x));
// expected output: "Undefined value!
  

尚未赋值的变量是undefined类型。一个   如果变量是,方法或语句也返回undefined   被评估的没有指定的值。函数返回   如果未返回值,则为undefined。