函数作用域与块级作用域

函数作用域:在函数内部声明的变量只能影响到变量所在函数体本身,无法从外部对函数内部的变量进行调用,被称为‘函数作用域’

块级作用域:ES6 引入了 let 和 const 关键字,JavaScript 也有了块级作用域。当代码块中存在 let 或 const,这个代码块就成为了块级作用域。ES6 的块级作用域必须有大括号,如果没有大括号,JavaScript 引擎就认为不存在块级作用域。(即定义变量和使用变量只能在同一个{}里)

var,let,const的区别

var

var没有块级作用域,有函数作用域。
代码1:

 window.onload=function(){if(1){var a=1;}console.log(a);}

效果1:

代码2:

function A(){var a=1;}window.onload=function(){A();console.log(a);}

效果2:

代码3:

<script>window.onload=function(){var a=1;A();function A(){console.log(a);}}
</script>

效果3:

可见在大函数中定义的变量对大函数中的小函数也有效果。

let

let只能在块级作用域中使用。
代码1:

 window.onload=function(){if(1){let a=1;}console.log(a);}

效果1:

代码2:

function A(){let a=1;console.log(a);}window.onload=function(){A();}

效果2:

const

const只在块级作用域内有效,并且声明变量需要立马赋值并不可改变变量值
代码1:

window.onload=function(){if(1){const a=1;}console.log(a);}

效果1:

代码2:

function A(){const a=1;console.log(a);}window.onload=function(){A();}

效果2:

代码3:

function A(){const a=1;const a=4;console.log(a);}window.onload=function(){A();}

效果3:

补充:全局作用域

声明全局变量的方法:

  1. 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。
  2. 直接给变量明赋值
  3. window.变量名=变量值

代码:

var a=1;function A(){function B(){console.log(a);b=2;window.c=3}B();}window.onload=function(){A();console.log(b);console.log(c);}

效果:


参考文章:
块级作用域
全局,函数,块级作用域的区别
JS中声明全局变量
函数作用域

块级作用域和函数作用域相关推荐

  1. 什么是作用域,函数作用域

    文章目录 一.什么是作用域? 代码如下(示例): 二.函数作用域 代码如下(示例): 总结 一.什么是作用域? [作用域]//作用域是运行时代码中某些特定部分中变量,函数和对象的可访问性.//换句话说 ...

  2. 作用域(全局作用域和函数作用域)

    作用域: 作用域就是一个变量可以使用的范围,主要分为全局作用域和函数作用域 全局作用域就是 Js 中最外层的作用域 函数作用域是 js 通过函数创建的一个独立作用域,函数可以嵌套,所以作用域也可以嵌套 ...

  3. javascript 全局作用域,函数作用域详解(配图解)

    函数作用域,我们可以理解为:就是一块"地盘",一个代码段所在的区域,他是静态的(相对于执行上下文对象),在编写代码时就确定了. 分类:全局作用域,函数作用域 作用:隔离变量,在不同 ...

  4. JavaScript基础08-day10【函数的返回值、实参、立即执行函数、方法、全局作用域、函数作用域、提前声明、this、工厂方法创建对象、构造函数】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

  5. es6 ie不兼容 函数_ES6:什么是块级作用域?

    在 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 我们先来看一下下面这种情况:内层变量可能会覆盖外层变量. var txt = '外层变量-->你好呀';func ...

  6. ES6中块级作用域下的函数声明

    背景 因为ES5的时候没有块级作用域,所以ES5规定不能再if这样的块中声明函数,但是为了兼容各大浏览器并没有严格遵守这条规定. ES6的时候引入了块级作用域,规定在块级作用域中声明函数就相当于使用l ...

  7. ES6规范前后块级作用域与函数声明的缠缠绵绵

    今天我们就以上面的这个例子来说一下,块级作用域与函数声明在ES6前后的纠葛,当然在ES6之前是没有块级作用域的,但为了与ES6统一,使文章更简明,所以把这对'{}'统一称为块级作用域. 开正题之前,还 ...

  8. 《深入理解ES6》笔记——块级作用域绑定(1)

    本章涉及3个知识点,var.let.const,现在让我们了解3个关键字的特性和使用方法. var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方 ...

  9. ES6基础2(块级作用域、数组对象解构)-学习笔记

    文章目录 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 数组解构 对象解构 字符串解构 函数的参数解构 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 //let c ...

最新文章

  1. Tomcat性能调优-让小猫飞奔[转]
  2. PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数
  3. 英特尔® OpenVINO™中级认证正式开启!
  4. c语言文件指针ab命令,C语言试题,~库(完整版~).doc
  5. 批次程序安裝手冊寫法
  6. 不输3000元旗舰!红米Note 7 Pro堆料有点狠
  7. Mac openssl 开发环境测试
  8. Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
  9. H5调用app原生接口
  10. 数据结构——p = new Lnode和Lnode *p有什么区别
  11. python 快乐的数字
  12. 经济学原理笔记-微观CP12-税制的设计
  13. 《西部世界》与《头号玩家》:哪个才是人类与人工智能相处的正确方式?
  14. 2 万字 + 30 张图 |MySQL 日志:undo log、redo log、binlog 有什么用?
  15. 2019南昌市计算机教师招聘,南昌经济技术开发区2019年招聘教师拟聘用人员名单...
  16. TSN之linuxptp交叉编译
  17. 影响人生的十部电影(网络流传,作者不详)
  18. Windows10系统U盘制作
  19. Pytorch 查看模型参数
  20. ThingsBoard入门实战(二):ThingsBoard 设备接入

热门文章

  1. PyTorch可视化-在PyTorch训练时使用TensorBoard记录Metrics
  2. 苹果手机可以分屏吗_为什么苹果手机就可以定价五千,换成安卓手机就不合理吗?...
  3. win10热点无法开启如何解决
  4. idea退出首界面_idea怎么退出到主界面
  5. 微信身份证 CTID CARD
  6. 最新导则下生态环评报告编制技术
  7. 深度学习的57个名词
  8. CSS学习29:字体图标(iconfont)包含下载及使用方法
  9. SVN 常见问题解决
  10. Makefile中的make命令使用(一)