博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全局变量和局部变量
阅读量:7134 次
发布时间:2019-06-28

本文共 806 字,大约阅读时间需要 2 分钟。

全局变量:指定义于function 外部的 var +变量名的外部声明(window对象)

例如:var a =100;function test(){ console.log(a)} ; test();      //a输出为100

 全局变量的声明主要有2种方式:

1.显示声明    如:var a =100;function test(){ console.log(a)} ; test();

 

2.隐示声明    如 var a=100; function test() { a=10; console.log(a)} ;console.log(a)  //输出 10  10

其中a=10为隐示声明一个全局变量,尽管它被写在function里面,只有当function被调用时才会变成全局变量

 

 

经典例题:

var a = 10;                  //声明和定义一个全局变量

function test(){

    a = 100;                    //表面上为:全局变量的隐示定义

    console.log(a);                   //打出100

    console.log(this.a);              //打出10

    var a;                     //声明一个局部变量

    console.log(a);                  //打出100

}       

test();

console.log(a);                  //打出10

 

运行结果为: 100   10  100  10

 

解析:javascript在执行前会对所有的声明部分进行分析,从而确定其作用域。所以:先分析 var a=10;  var a 。得到var a=10为全局变量  var a 为局部变量。所以当执行到 a=100时,内部已经确定a为局部变量的定义。所以a =100不能理解为全局变量的隐示定义。

其中this指针指向的是函数调用者,而他的调用者在全局作用域,所以this.a指向全局的a即为10

转载于:https://www.cnblogs.com/8080zh/p/9227826.html

你可能感兴趣的文章
MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作
查看>>
各种排序算法汇总
查看>>
C#巧用Excel模版变成把Table打印出来
查看>>
SOAP 及其安全控制--转载
查看>>
JarSearch
查看>>
[Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频...
查看>>
Freemodbus介绍及测试
查看>>
[转]Phantomjs实现获取网页快照并生成缩略图
查看>>
leveldb源码学习系列
查看>>
Linux 运行 apt-get install 就出现jdk installer 错误的解决方法
查看>>
Android OpenGL ES(九)绘制线段Line Segment .
查看>>
Ubuntu下安装配置JDK1.7
查看>>
转载:STM32之中断与事件---中断与事件的区别
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]4.5.10
查看>>
设计模式(十四)单例模式(创建型)
查看>>
JAVA修饰符类型(public,protected,private,friendly)
查看>>
haxm intelx86加速模拟器的安装
查看>>
(ETW) Event Tracing for Windows 入门 (含pdf下载)
查看>>
OSSEC
查看>>
我的前端学习历程
查看>>