美文网首页
块级作用域

块级作用域

作者: 意蜀 | 来源:发表于2019-05-14 21:33 被阅读0次

Q:js有木有块级作用域

A:js里面的块级作用域也是在ES6里面引入的,那么,什么又是ES6呢?
ES6是ECMAScript 6,说到这里,我先提一下javascript的结构。其实一个完整的js是由ECMAScript、DOM和BOM组成的,关于ECMAScript 也有好几个版本,而在ECMAScript 5里面并没有引入块级作用域。因此当谈到js的块级作用域的时候,就会想起ECMAScript 6


Q:ECMAScript 6里面的块级作用域是什么呢?

A:由一对花括号{}中的语句集都属于一个块,在这个{}里面包含的块内定义的所有变量在代码块外都是不可见的,因此称为块级作用域。


那么,块级作用域是

eg


image.png
image.png

b并没有给它赋值,只是声明了而已,因此输出undefined,对于此例的a,b并不是同一种数据类型,因此返回null.

eg


image.png
image.png

如上,该js代码被一对{}包起来了,那么控制台输出的结果就是a,b变量的值。

Q:有木有发现什么呢?

Ab是在该块级作用域里面定义的,但是在该块级作用域外边也可以被访问。是的,块级作用域和ES5里面规定的函数作用域并不相同,请看下面的例子。

image.png
image.png

点击按钮,控制台正确打印i.

但是

image.png

点击按钮,控制台会报错

小总结

如果是函数作用域的话,在{}外面不会访问到在{}里面声明的变量,但是在块级作用域里面就可以实现在{}外访问在里面声明的变量。

相关文章

  • js 作用域

    js 作用域主要有:全局作用域和局部作用域,es5之前没有块级作用域,es6有了块级作用域 何为块级作用域,块级作...

  • let、const和var的区别(个人笔记)

    1. 区别 (1)块级作用域块作用域由{ }包括,let和const具有块级作用域,var不存在块级作用域。块级作...

  • let,var和const

    var没有块级作用域,只有方法作用域常见的块级作用域,if(){}。for(){}。

  • 第七章 块级作用域、私有变量

    模仿块级作用域 私有变量  js没有块级作用域,只有全局作用域和局部作用域(函数作用域),块级作用域是指某一部分代...

  • 你真的懂let和const吗?

    块级作用域 在ES6之前我们脑海里应该只存在全局作用域和函数级作用域,没有块级作用域。那么为什么要引入块级作用域呢...

  • js高级知识点(第五天)

    所用域 什么是作用域 变量起作用的范围 什么是块级作用域,使用代码块限定的作用域是块级作用域(let声明的变量是块...

  • ES6->块级作用域

    块级作用域 为什么需要块级作用域? ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。第...

  • es6新增特性

    一、变量的改变 let 用来声明变量(块级作用域) const 用来表示常量(块级作用域) 块级作用域 就是在{}...

  • vue.js let与for的用法

    (一)块级作用域1.let声明的变量拥有块级作用域,块级作用域是一对大括号2.块级作用域可以直接写一对大括号,以后...

  • js声明提升

    块级作用域块级作用域是指花括号内的每一段代码都具有各自的作用域,而javascript没有块级作用域。javasc...

网友评论

      本文标题:块级作用域

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