美文网首页网页前端后台技巧(CSS+HTML)
web前端入门到实战:js的局部变量和全局变量的区别

web前端入门到实战:js的局部变量和全局变量的区别

作者: 大前端世界 | 来源:发表于2020-01-06 22:13 被阅读0次

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呢?

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

专门建立的学习Q-q-u-n: 784783012 ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习技巧
(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划)
var a = 1;  
function test1() {  
   var a;//局部变量与全局变量重名时会覆盖全局变量,此时的a只有声明却未定义  
    alert(a);//所以执行alert值为undefined  
    a = 2;  
    alert(a); 
}  
test1();  
alert(a);//undefined  2

总结:

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

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

相关文章

  • web前端入门到实战:js的局部变量和全局变量的区别

    js是一个弱类型语言,同一个变量一会儿可以储存数据,一会儿可以存储字符串。 全局变量:直接定义的变量是全局变量,可...

  • animation参考

    web前端入门到实战:10分钟入门 CSS3 Animation - 前端天宇的文章 - 知乎https://zh...

  • 你真的理解static吗?

    static修饰的全局变量与普通的全局变量的区别static修饰的局部变量和普通局部变量的区别static修饰的函...

  • web前端入门到实战:Js代理模式

    所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、文件或其它昂...

  • js中的作用域链

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

  • js 变量作用域和函数作用域

    js变量作用域可分为:“全局变量”和“局部变量” “全局变量”:申明在函数之外的变量 “局部变量”:申明在函数体中...

  • 技术文章地址

    Web前端开发CSS、JS 廖雪峰的JS教程 JQuery基础 前端工程师必备的PS技能—切图篇 前端入门方法 A...

  • web前端入门到实战:@import和link引入样式的区别

    关于@import和link引入样式的区别网上有很多种说法。大致有如下几种,不过这其中会有我存疑的地方,我们可以一...

  • web前端入门到实战:好用的Js图表库

    市面上有很多 JavaScript 图表库,本文则列出了其中的几款佼佼者,可以用在你的新项目中。 D3.js D3...

  • Javascript 学习(闭包)

    js闭包 js中的闭包问题是由函数变量的作用域引出的,全局变量和局部变量的概念和Java感觉没有太大的区别,但是如...

网友评论

    本文标题:web前端入门到实战:js的局部变量和全局变量的区别

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