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

作用域分为三种:全局作用域(全局变量),局部作用域(局部变量),块级作用域(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. http协议报文体_HTTP协议详解
  2. “智能经济”浪潮下,百度为何强调“人格化”与“服务化”?
  3. [转帖]鲍鹏山:我们培养了很多高学历的野蛮人
  4. 经典线程同步 事件Event
  5. 以JQuery的方式封装 cookie 方便调用
  6. 2019年参加迅雷链宣讲会日记
  7. Matlab矩阵转置注意事项
  8. 2021中国移动秋招备考知识
  9. 微信小程序接入腾讯云IM即时通讯(发送消息开发步骤)
  10. 题解 伊甸园日历游戏
  11. 无人机DLG生产作业流程
  12. 大厂面试通行证- Java基础
  13. 西班牙语dele等级_DELE——西班牙语水平考试
  14. 雷军VS黄章:现实主义和梦幻主义的商业对决
  15. 树形结构表3种设计优劣分析与分享
  16. 收藏从未结束,学习从未开始
  17. Java的Enum枚举反编译的结果(为什么它是一个枚举对象是一个单例)
  18. Android单元测试中AndroidJUnit4获取context
  19. 实验八.方程根的MATLAB求解
  20. STM32F0 ADC程序设计

热门文章

  1. node爬虫,抓取网页数据
  2. vscode Go傻瓜式代码注释生成插件-GoComment
  3. unet是残差网络吗_基于深度监督残差网络的肝脏及肝肿瘤分割
  4. 手游平台游戏源码为什么要选择PHP作为后端语言
  5. python 资源库
  6. 解决Google浏览器账号无法登录提示浏览器不安全
  7. python最小二乘法_用python实现最小二乘法
  8. 云存储遍地开花,你用哪个?
  9. 解决CC++头文件互相包含问题
  10. 怎么查看自己的计算机所开端口号,怎么查看自己电脑已经打开的端口