块级作用域和函数作用域
函数作用域与块级作用域
函数作用域:在函数内部声明的变量只能影响到变量所在函数体本身,无法从外部对函数内部的变量进行调用,被称为‘函数作用域’
块级作用域: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:
补充:全局作用域
声明全局变量的方法:
- 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。
- 直接给变量明赋值
- 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中声明全局变量
函数作用域
块级作用域和函数作用域相关推荐
- 什么是作用域,函数作用域
文章目录 一.什么是作用域? 代码如下(示例): 二.函数作用域 代码如下(示例): 总结 一.什么是作用域? [作用域]//作用域是运行时代码中某些特定部分中变量,函数和对象的可访问性.//换句话说 ...
- 作用域(全局作用域和函数作用域)
作用域: 作用域就是一个变量可以使用的范围,主要分为全局作用域和函数作用域 全局作用域就是 Js 中最外层的作用域 函数作用域是 js 通过函数创建的一个独立作用域,函数可以嵌套,所以作用域也可以嵌套 ...
- javascript 全局作用域,函数作用域详解(配图解)
函数作用域,我们可以理解为:就是一块"地盘",一个代码段所在的区域,他是静态的(相对于执行上下文对象),在编写代码时就确定了. 分类:全局作用域,函数作用域 作用:隔离变量,在不同 ...
- JavaScript基础08-day10【函数的返回值、实参、立即执行函数、方法、全局作用域、函数作用域、提前声明、this、工厂方法创建对象、构造函数】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- es6 ie不兼容 函数_ES6:什么是块级作用域?
在 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 我们先来看一下下面这种情况:内层变量可能会覆盖外层变量. var txt = '外层变量-->你好呀';func ...
- ES6中块级作用域下的函数声明
背景 因为ES5的时候没有块级作用域,所以ES5规定不能再if这样的块中声明函数,但是为了兼容各大浏览器并没有严格遵守这条规定. ES6的时候引入了块级作用域,规定在块级作用域中声明函数就相当于使用l ...
- ES6规范前后块级作用域与函数声明的缠缠绵绵
今天我们就以上面的这个例子来说一下,块级作用域与函数声明在ES6前后的纠葛,当然在ES6之前是没有块级作用域的,但为了与ES6统一,使文章更简明,所以把这对'{}'统一称为块级作用域. 开正题之前,还 ...
- 《深入理解ES6》笔记——块级作用域绑定(1)
本章涉及3个知识点,var.let.const,现在让我们了解3个关键字的特性和使用方法. var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方 ...
- ES6基础2(块级作用域、数组对象解构)-学习笔记
文章目录 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 数组解构 对象解构 字符串解构 函数的参数解构 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 //let c ...
最新文章
- Tomcat性能调优-让小猫飞奔[转]
- PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数
- 英特尔® OpenVINO™中级认证正式开启!
- c语言文件指针ab命令,C语言试题,~库(完整版~).doc
- 批次程序安裝手冊寫法
- 不输3000元旗舰!红米Note 7 Pro堆料有点狠
- Mac openssl 开发环境测试
- Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
- H5调用app原生接口
- 数据结构——p = new Lnode和Lnode *p有什么区别
- python 快乐的数字
- 经济学原理笔记-微观CP12-税制的设计
- 《西部世界》与《头号玩家》:哪个才是人类与人工智能相处的正确方式?
- 2 万字 + 30 张图 |MySQL 日志:undo log、redo log、binlog 有什么用?
- 2019南昌市计算机教师招聘,南昌经济技术开发区2019年招聘教师拟聘用人员名单...
- TSN之linuxptp交叉编译
- 影响人生的十部电影(网络流传,作者不详)
- Windows10系统U盘制作
- Pytorch 查看模型参数
- ThingsBoard入门实战(二):ThingsBoard 设备接入