码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript变量提升

时间:2017-04-17 12:51:33      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:20px   asc   作用域   color   efi   查找   函数   问题:   访问   

一、问题:

window.onload=function(){
  var bar=1;
  function test(){
    console.log(bar);
  }
  test();
};

结果为1

window.onload=function(){
  var bar=1; 
  function test(){ 
    console.log(bar); 

    var bar=2;
    console.log(bar);

  } 
  test();
};

结果为 undefined 2

二、作用域链:

当在在函数内部要访问一个变量的时候,首先查找自己的内部作用域有没有这个变量,如果没有就到这个对象的原型对象中去查找,还是没有的话,就到该作用域所在的作用域中找,直到到window所在的作用域

三、JavaScript变量提升

虽然变量bar的定义在后面,不过浏览器在解析的时候,会把变量的定义放到最前面,上面的test函数相当于

      function test(){  

var bar;  

console.log(bar);   //undefined  

bar=2;    

console.log(bar);   //2

}

四、函数的定义也会到提升到最前面

var foo=function(){  

  console.log(1);

};

function foo(){  

  console.log(2);

}

foo();  //结果为1

上面的代码相当于:

function foo(){  

  console.log(2);

}

var foo;

foo=funciton(){

  console.log(1);

}

foo();   //1

JavaScript变量提升

标签:20px   asc   作用域   color   efi   查找   函数   问题:   访问   

原文地址:http://www.cnblogs.com/chayu/p/6722212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!