js 变量置顶解析

var myvar = 'my value';

(function() {
  alert(myvar); // undefined
  var myvar = 'local value';
})();

为什么会弹出undefined????

因为变量声明被“预解析”。

    在当前的作用域内,无论在哪里变量声明,在幕后,其都在顶部被“预解析”了。不过,仅声明被“预解析”。该变量即使初始化,其当前的值,在作用域的顶部,也会被设置成undefined

变量声明置顶解析:

  (function() {

      var a = 'a';

        var b = 'b';

      var c= 'c';

  })();

  相对于

  (function() {

      var a, b, c;

      a = 'a';

      b = 'b';

      c= 'c';

  })();

myvar先声明但后赋值。所以弹出的时候没赋值,弹出undefined。

 
原文地址:https://www.cnblogs.com/sao-di-seng/p/5455327.html