美文网首页你不知道的JavaScriptJava 核心技术
Javascript之全局变量和局部变量

Javascript之全局变量和局部变量

作者: a333661d6d6e | 来源:发表于2018-11-15 17:58 被阅读0次

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


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

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

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

二、提到全局变量与局部变量不得不说明的一个知识点就是变量提升。‘与C/C++逐行执行代码不同,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);  欢迎加入全栈开发交流群一起学习交流:864305860
}  
test1();  
alert(a);//undefined  2

结语

感谢您的观看,如有不足之处,欢迎批评指正。

相关文章

  • 什么是js闭包?

    熟悉javascript的人应该都知道,在javascript中,有两种变量存在,即局部变量和全局变量。局部变量和...

  • JavaScript函数闭包

    JavaScript闭包 JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。 全局变量1....

  • 前端JS变量问题

    JavaScript变量可以是局部变量或者全局变量。 局部变量 示例1: functionfun(){varn=7...

  • Javascript 变量、函数的声明

    javascript变量 全局变量和局部变量按照变量的作用域来区分,和大多数编程语言类似,javascript变量...

  • js中的作用域链

    1、JavaScript的全局变量和局部变量 首先,先来看看js的全局变量和局部变量,js不是块级作用域,所以不能...

  • JS作用域链

    1、JavaScript的全局变量和局部变量 (1) 全局变量 js的全局变量也可以看做window对象的属性。如...

  • python

    函数内全局变量赋值 Python中有局部变量和全局变量,当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变...

  • Swift-全局变量、局部变量以及类型属性

    全局变量和局部变量 全局变量和局部变量 计算属性和属性观察器所描述的功能也可以用于全局变量和局部变量。全局变量是在...

  • JavaScript闭包

    预备知识: 变量 全局变量 局部变量Javascript语言特点:函数内部可以读取外部的全局变量函数外部无法读取内...

  • JavaScript 变量的作用域与封闭函数

    变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。 1、全局变量:在函数之外定义...

网友评论

    本文标题:Javascript之全局变量和局部变量

    本文链接:https://www.haomeiwen.com/subject/llmyfqtx.html