一句话概括作用域:变量和函数的可访问范围

作用域分为三种:全局作用域(全局变量),局部作用域(局部变量),块级作用域(es6新增)

什么是全局变量(在函数外定义的变量)
什么是局部变量:局部变量也叫函数变量(在函数内定义的变量);

全局变量和局部变量的区别有以下几点:

  1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数
  2. 内存存储方式不同:全局变量是程序是整个程序都需要用到的,单独分出一块存储区保存,该存储区存储的数据不清空,局部变量是函数退出时自动清空的,所以放在栈里做临时存储
  3. 生命周期不同:全局变量随着程序结束而销毁,局部变量随着函数退出而销毁

全局变量:能不用全局变量就不用,why?
主要原因就是 不利于模块化 因为全局变量可以被每个函数调用,可能不经意的修改就影响到其他函数,
可复用开发麻烦。
调试起来也麻烦,毕竟全局变量一直在变

var num=1;
if(1==1){var num=2;console.log(num)//2
}
console.log(num)//2

如果非要用到全局变量,解决方法:
1.全局变量前面都加上 g_;
2.全局变量只有一个,要用就只用定义好的这个

(function (){this.global=function(){}global.qq='1278125909';global.fn=function(){return '31'}
}).call(this)
console.log(global.qq)//1278125909
console.log(global.fn())//31

必须掌握

局部变量是无法被 局部变量外的函数所调用的,但是全局变量可以被局部函数所调用;

var num='99';
function fn1() {var str="cx";console.log(num);//99
}
fn1()
console.log(str)// str is not defined

1 .在函数体内,局部变量的优先级高于同名的全局变量,如果重名,全局变量会被覆盖

var scope="global";
function fn() {var scope="func";return scope
}
console.log((fn()))//fnnc
console.log(scope)//global   此处之所以值为global,是因为这时
//全局变量是无法获取到fn里的定义的scope,所以值才是global

2 .函数参数也是局部变量,只在函数体内有定义

function fn(p1,p2){console.log(p1)//99console.log(p2)//2
}
fn(99,2);
console.log(p1)//p1 is not defined

PS:在js里if语句不是一个作用域;
因为根据局部变量无法被局部函数外所调用的原则,str应该为not defined,但是结果却是cx;

var num=1;
if(num==1){var str='cx'
}
console.log(str)//cx

作用域之全局变量和局部变量相关推荐

  1. Python变量作用域(全局变量和局部变量)

    Python变量作用域(全局变量和局部变量) 所谓作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用.有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只 ...

  2. python函数用法详解2(变量的作用域(全局变量、局部变量)、共享全局变量、函数返回值、函数的参数(位置参数、关键字参数、默认参数、不定长参数)、拆包、交换变量值、引用、可变和不可变类型)

    1. 变量作⽤域         变量作⽤域指的是变量⽣效的范围,主要分为两类:局部变量和全局变量. 局部变量         定义在函数体内部的变量,即只在函数体内部⽣效. def testA(): ...

  3. 【C语言】数据存储分类(动态、静态存储)、作用域(全局变量、局部变量)详解--(已配图,更方便理解)

    目录 1.变量分类(引入存储类别) 1)存在时间看动态存储还是静态存储 2)作用域:局部变量和全局变量 1.变量分类(引入存储类别) 变量和函数都有两个属性:数据类型和数据存储类别(auto自动.st ...

  4. python函数作用域包括局部变量和参数_python函数变量的作用域声明(全局变量和局部变量)...

    函数变量的作用域声明(全局变量和局部变量) 引入问题: 局部变量: 局部变量:定义在函数内部的变量,它的作用域也仅限于函数内部,出了函数就不能使用了. 例如: #encoding = utf-8 de ...

  5. php全局变量的关键字,PHP变量作用域(全局变量局部变量)globalstatic关键字用法实例分析...

    本文实例讲述了PHP变量作用域(全局变量&局部变量)&global&static关键字用法.分享给大家供大家参考,具体如下: 我们知道,变量呢,其实就相当于我们用来储存信息的容 ...

  6. 认清JavaScript和JAVA全局变量和局部变量的作用域

    认清JavaScript和JAVA全局变量和局部变量的作用域 2010年2月28日 george 发表评论 阅读评论 通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域 注意 ...

  7. C语言中全局变量和局部变量,作用域与生命周期的相关问题。

    C语言中变量分为局部变量和全局变量: 在程序的开头定义的是全局变量,在函数内部定义的是局部变量. 在这里涉及2个概念,作用域与生命周期. 作用域指的是描述变量在哪段代码中有效:生命周期指的是变量什么时 ...

  8. python变量作用域图解_图解python全局变量与局部变量相关知识

    这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 了解全局变量和局部变量之前,我们先来了解 ...

  9. C语言基础入门48篇_44_静态局部变量、静态全局变量、静态函数(静态局部变量只被初始化一次,保留变量值、静态全局变量是加了作用域的全局变量、静态函数亦是加了作用域的函数)

    static关键字 C语言中的static关键字,有多种用法,它可以用来修饰局部变量.全局变量和函数,分别得到静态局部变量.静态全局变量和静态函数. 1. 静态局部变量 普通局部变量,函数每调用一次就 ...

最新文章

  1. 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题
  2. Python3多线程threading介绍(转载)
  3. txt或者csv数据文件的格式是有要求的,如下shell代码中说明。
  4. tomcat配置文件server.xml详解
  5. NYOJ 562 盒子游戏
  6. C语言返回文件大小的功能(fseek和ftell的使用)
  7. 多线程下的生产者消费者(一个初始值为0的变量,两个线程一个加1一个减1,轮询5轮)
  8. ajax保存避免重复提交,ajax 实现防止重复提交
  9. 对于大批量赋值功能,使用if判断是否能提高性能
  10. ORA-01940: cannot drop a user that is currently...
  11. Java后端开发需要学什么
  12. 2021年大数据面试宝典完整版(含答案解析)
  13. DWM1000 Blink结构 -- 帧过滤第一节
  14. linux系统怎么使用r语言,linux命令行下使用R语言绘图
  15. Oracle对索引做统计,Oracle收集索引统计信息
  16. python爬视频网站数据_Python爬虫:B站排行榜视频播放量,视频评论量等数据采集...
  17. 作业(数组)---运行环境winTC(二)
  18. 定义一个形状类(Shape)方法:计算周长,计算面积。子类: 矩形类、圆形类、三角形类...
  19. Android UI个性style
  20. 【LeetCode】723. Candy Crush 解题报告 (C++)

热门文章

  1. 转:当你拼命的时候别人会有多少在拼命
  2. OpenCV之图像对比度、亮度值调整
  3. Shopee运营:新手卖家做Shopee可收藏的运营攻略
  4. “黑科技”安防界遍地开花 公安实战如何应用?
  5. 【Ubuntu】虚拟机忘记登录密码如何解决
  6. 【低代码实践】京东科技活动平台:魔笛介绍
  7. Web 应用服务器:Tomcat介绍、下载、安装及控制台乱码问题解决详细教程
  8. 安卓代码中获取dp值为控件设置宽高,获取dimen值
  9. 解读涉密资质新旧标准承接范围的变化
  10. Swagger UI文件上传