码迷,mamicode.com
首页 > Web开发 > 详细

关于JS里面的变量提升

时间:2015-04-17 14:00:09      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

之前和一个同事做一个项目的时候遇到了一个变量提升的问题,明明已经定义了但是会弹出undefined.后来查了一下,因为是变量提升的原因才导致的。

  var V="Hello World";
     (function(){
         alert(V);
        var V="111"
     })()
这个时候你会弹出一个undefined,按照我们本来的思路应该是弹出一个Hello World或者111,和undefined是完成不沾边的。

当我们把函数改成这个样子的时候

  var V="Hello World";
     (function(){
         var V="111"
         alert(V);
     })()

弹出的东西就是111,没错,这牵涉到了作用域的东西。一般我们把变量声明在作用域的顶端就不会出现这种问题,但是变量提升,它仅仅提升的只是变量,并没有提升变量的值。我们回到第一个demo:

var V="Hello World";
     (function(){
         var V;
         alert(V);
         V="111"
     })()

实际上是这样的,这样你弹出的东西就是undefined了,因为你提升了变量,到了作用域的顶端,但是值在alert下方。JS是从上往下执行。自然而然它就没有找到。

所以以后我们以后定义变量以及值最好是定义在作用域的顶端。这样会避免一些不必要的错误。


关于JS里面的变量提升

标签:

原文地址:http://blog.csdn.net/u011551941/article/details/45095119

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