函数外声明变量函数内ajax修改_web前端入门到实战:js的局部变量和全局变量的区别...

8c52dce103a0eec6b8ab4665bd9405c7.png

js是一个弱类型语言,同一个变量一会儿可以储存数据,一会儿可以存储字符串。

全局变量:直接定义的变量是全局变量,可以被所有的脚本所访问到。
局部变量:在函数定义里申明的变量。

重点:局部变量只在函数内有效,同一个变量名如果在同时出现,则局部变量覆盖全局变量。

代码说明:

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

var a = 1;   function test1() {     var a = 2;     alert(a);   }   test1();// 2  

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

** 二、提到全局变量与局部变量不得不说明的一个知识点就是变量提升。 **

JS引擎的工作方式是,先获取所有被声明的变量再逐一执行,所有变量的声明语句都会被提升到当前代码块的头部’。

注:代码块指的是function的一个{},通常的if、while、for的{}中变量不会提升。

var a = 1;  function test1() {      alert(a);      var a = 2;      alert(a);  }  test1();   alert(a);//undefined  2  1

为什么结果不是1 2 1呢?

原因就在于代码提升。由于代码提升的效果所以实际执行的代码是这样的:

var a = 1;  function test1() {     var a;//局部变量与全局变量重名时会覆盖全局变量,此时的a只有声明却未定义      alert(a);//所以执行alert值为undefined      a = 2;      alert(a); }  test1();  alert(a);//undefined  2

总结:

如果在任何函数定义之外声明了一个变量,则该变量为全局变量,且该变量的值在整个持续范围内都可以访问和修改。

如果在函数定义内声明了一个变量,则该变量为局部变量。每次执行该函数时都会创建和破坏该变量;且它不能被该函数外的任何事物访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值