HTML5技术

js的全局变量和局部变量部分讲解 - _wind

字号+ 作者:H5之家 来源:博客园 2016-07-29 16:00 我要评论( )

以此文作为自己学习的一个总结。 关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量。 一、局部变量和全局变量重名会覆盖全局变量 1 var a = 1 ; 2 function test1() { 3 var a = 2 ; 4 alert(a); 5 } 6 t

  以此文作为自己学习的一个总结。

      关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量。

 

     一、局部变量和全局变量重名会覆盖全局变量    

1 var a = 1; 2 function test1() { 3 var a = 2; 4 alert(a); 5 } 6 test1();// 2

      这里的函数中的定义的a是局部变量,它的作用域为函数{}之间,函数外定义的a为全局变量,它的作用域为整个程序(描述有点不准确)。在函数中的局部变量和全局变量重名,局部变量会覆盖全局变量。

 

      二、提到全局变量与局部变量不得不说明的一个知识点就是变量提升(这是一个坑)。‘与C/C++逐行执行代码不同,JS引擎的工作方式是,先获取所有被声明的变量再逐一执行,所有变量的声明语句都会被提升到当前代码块的头部’。注:代码块指的是function的一个{},通常的if、while、for的{}中变量不会提升。

了解了变量提升了之后我们用以下代码来演示:

1 var a = 1; 2 function test1() { 3 alert(a); 4 var a = 2; 5 alert(a); 6 } 7 test1(); 8 alert(a);//undefined 2 1

为什么结果不是1  2  1呢?原因就在于代码提升。由于代码提升的效果所以实际执行的代码是这样的:

 

1 var a = 1; 2 function test1() { alert(a);a = 2; 6 alert(a); 7 } 8 test1(); 9 alert(a);//undefined 2

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • vue全局配置----小白基础篇 - 星光笔

    vue全局配置----小白基础篇 - 星光笔

    2017-04-28 08:04

  • omi-cli新版发布-升级webpack2和支持sass生成组件局部CSS - 【当耐特】

    omi-cli新版发布-升级webpack2和支持sass生成组件局部CSS - 【当耐特

    2017-03-16 11:03

  • ASP.NET Core MVC 配置全局路由前缀 - Savorboard

    ASP.NET Core MVC 配置全局路由前缀 - Savorboard

    2016-09-25 11:00

  • [Bootstrap]全局样式(三) - 盛夏、光年

    [Bootstrap]全局样式(三) - 盛夏、光年

    2016-04-22 18:00

网友点评
r