JavaScript中局部变量与全局变量的不同

JavaScript中局部变量与全局变量

  我们知道,JavaScript的变量是松散型的变量,也就是说,其变量只需用var声明,其赋值的类型是不限定的。比如:

var person=18;
person="zhuzhenwei";

   即先给person保存了一个number类型的值,之后还可以保存一个string类型的值,但是,这种做法是不推荐的

甚至我们都可以直接给一个变量赋值,而不需要声明。比如:

person=18;
person="zhuzhenwei";

  接下来,我说一下全部变量与全局变量的不同。如下:

function add(){
      var num=5;
      console.log(num);
}
add();
alert(num);

  如果你认为这时会弹出一个窗口,显示为5,那你就错了!!这是因为,一旦在函数中我们用var声明了一个变量,那么用var操作符定义的变量将成为定义该变量的作用域中的局部变量(多读两遍啊),于是,num即为局部变量,且这个变量在函数退出后就会被销毁,所以我们用alert(num);就得不到想要的弹出窗口了。而会在console控制台中提示错误:

Uncaught ReferenceError: num is not defined

  

  如果省略var操作符,那么该变量就是一个全局变量。

  于是,我们去掉试一试:

function add(){
      num=5;
      console.log(num);
}
alert(num);

  这时候,发现控制台提示了与上面同样的错误!!

这是为什么呢?

 仔细对比一下,你会发现我漏掉了add();这个调用函数。由于当函数被调用时,才会创建该变量并为其赋值。因此,如果我们没有调用该函数,num这个变量就永远不会被创建,更不可能alert了!

  下面我们补充完整。

function add(){
      num=5;
      console.log(num);
}
add();
alert(num);

  ok,这样就可以得到我们想要的结果了。

时间: 2025-01-02 18:12:29

JavaScript中局部变量与全局变量的不同的相关文章

javascript中局部变量和全局变量的区别详解

javascript有两种变量:局部变量和全局变量.当然,我们这篇文章是帮助大家真正的区别这两种变量. 首先,局部变量是指只能在本变量声明的函数内部调用.全局变量时整个代码中都可以调用的变量.当然,单单从字面上理解肯定是不清楚的,下面我详细的介绍下: 大家都知道,变量是需要用var关键字声明的.但是javascript中也可以隐式的使用变量,就是不用声明,直接使用.而且,千万注意,javascript把隐式声明的变量总是当成全局变量来使用的. 例如: 代码如下: function myName(

如何检测 JavaScript 中的自定义全局变量

译者注: 全局变量的滥用是一种很糟糕的程序设计.很容易造成依赖和状态混乱. 而在 Java 和 JavaScript 这种自动垃圾回收的语言里面,全局(可见的)变量一直是内存泄露的隐藏杀手. 本文提供了一种靠谱的检测全局变量实现方式. 在 JavaScript中随意设置全局变量并不是个好习惯.原文作者参与了 MooTools 项目, 据他所说, 已经有十年时间天天听到与此相关的谈论. MooTools 扩展了浏览器的原生JS对象, 但也使用了一些全局变量, 如 Browser 和 $$.我觉得

javascript 关于局部变量和全局变量

js中函数执行过程不只是单纯的局部变量覆盖全局变量,和函数里面的声明情况有关.比如: <script> var a =1; function test(){ alert(a); //a为undefined! 这个a并不是全局变量,这是因为在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量, //所以全局变量a被覆盖了,这说明了Javascript在执行前会对整个脚本文件的定义部分做完整分析,所以在函数test()执行前, //函数体中的变量a就被指向内部的局部变量

Labview中局部变量和全局变量

局部变量的作用域是整个VI,它用于在单个VI中传输数据: 全局变量的作用域是整台计算机,它主要用于多个VI之间共享数据

js中局部变量和全局变量的易混点

1.以下输出的是: undefined局部变量 <script type="application/javascript"> var scope="全局变量"; function cal(){ document.writeln(scope+"<br />"); var scope="局部变量";                                //(1)处 document.writeln

关于c++中局部变量和全局变量的存储位置及内存回收机制

局部变量,参数变量存放在栈中,当离开作用范围后,分配的内存在作用范围外会被系统自动回收. new出来的内存空间存放在堆中,不受作用域管理,不会被系统自动回收,只有在使用delete删除或者整个程序结束后才会释放内存. 因此很容易发生忘记delete而造成内存泄漏事件.例如在某个函数中定义有: A* a=new A(); 则指针a在函数运行完毕后将销毁,但是new出来的内存并不会被销毁,需要执行delete a;才能被销毁. 此外static变量,全局变量的有效期都是整个程序运行期. 而智能指针的

Python中局部变量与全局变量的解释

num = 5 def  func(): num += 1 print(num) print(num) 输出:UnboundLocalError: local variable 'num' referenced before assignment 翻译:局部变量错误:变量 "num" 未被定义就被应用了.由此再次证明了这里定义了一个局部变量,而不是使用的全局的 "num" 总结:当已经在函数体外的变量已经被定义为全局变量后,在函数体内又被重新赋值一遍,这时的变量在函

javascript 中event是全局变量

The only thing I can think of is that event is in fact window.event and it makes itself available when some event dispatches and Event...but that would mean that any element could get that event information if called at the same time as the event whe

JavaScript中全局变量和局部变量的不同

今天看到大神写得一片文章,自己对全局变量和局部变量的理解还是不够深刻,因此写到这篇文章,做个总结. 大神代码截图+理解文字如下: 解析:上面代码中,变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i.每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i.也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是10. 一.定义 局部变量:变量在函数内声明,只能在函数内