javascript变量的怪异行为

Ach*_*eka -4 javascript

情况1 - 如果我在变量声明之前调用console.log(变量),我将得到未定义.例如;

  // code 
  console.log(a);
  var a ;

  // output
  undefined
Run Code Online (Sandbox Code Playgroud)

情况2 - 如果我没有变量声明的console.log(变量),我得到Uncaught ReferenceError:未定义变量.

// code
console.log(a);

// output
Uncaught ReferenceError: a is not defined
Run Code Online (Sandbox Code Playgroud)

但是我们可以在函数定义之前或之后调用函数,但它从不会产生任何问题.例如;

  console.log(example());

  function example(){
    return 'test done';
  }
  console.log(example());

 // output without any issue
Run Code Online (Sandbox Code Playgroud)

现在的问题是,是什么样的区别不确定的没有定义.

Car*_*how 5

未定义表示 - 变量存在,但其中没有任何存储值.未定义的意思是 - 未声明的变量(不存在).