您当前的位置: 首页 >  Java

任磊abc

暂无认证

  • 2浏览

    0关注

    182博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

javascript变量的提升

任磊abc 发布时间:2018-02-23 13:15:33 ,浏览量:2

什么叫做的变量的提升?

说到这里原本淡定的心情忽然间变得,有点小小的鸡冻了!

首先,大家先看一个函数:

var a = 123;

     function f(){

      console.log(a);

     var a = 1;

      console.log(a);

     }

     f();

您可能会想当然的认为console.log(a);第一次显示的是123(也就是全局变量a的值),而第二次显示的是1(也是就局部变量a)。但是实际上,却不是这样!第一次实际上显示的是undefined.原因在于函数域始终优于全局域,所以局部变量a 会覆盖掉所有域它同名的全局变量,尽管在.

这也就是说,当javaScript执行过程进入新的函数时,这个函数内部被声明的所有变量都会被移动(或者说提升)到函数最开始的地方.另外被提升的只有变量的声明.只有函数体内声明的这些变量在该函数执行开始时就存在,而与之相关的赋值操作并不会被提升.它还在原来的位置上.譬如在前面的例子中,局部变量本身被提升到了函数开始处,但并没有在开始处就被赋值为1.

因此,上面的函数可以等价的改写为:

 function f(){

     var a ;

      console.log(a);//a=undefined;

     a = 1;

      console.log(a);//a=1

     } 

   f();

当然,也可以采取在最佳实践中提到过的单一var模式.在这个例子中,我们可以手动提升变量的位置,这样一来就不会被javaScript的提升行为所混淆.

关注
打赏
1656830895
查看更多评论
立即登录/注册

微信扫码登录

0.0413s