块级作用域在ES6之前我们脑海里应该只存在全局作用域和函数级作用域,没有块级作用域。那么为什么要引入块级作用域呢?避免外层变量被覆盖var str = "hello";
function d() {
console.log(str);
if (false) {
分类:
其他好文 时间:
2018-03-18 17:13:20
阅读次数:
104
var 与 let ① var 声明的变量根据作用域分为全局变量和局部变量,let 是块级声明(块级作用域),在指定块(字符 { 和 } 之间的区域)的作用域之外无法访问 let 声明的变量。 ② var 存在变量提升(hoisting)机制,let 不存在变量提升机制(所以 let 声明语句放在封 ...
分类:
其他好文 时间:
2018-03-14 22:06:23
阅读次数:
157
1. let 用来声明变量,只在命令所在的代码块内有效 2. 在for循环中这个提现的很完美 出来的是5 打印出来的是20 这就更好的说明了块的作用域 3.let不存在变量提升,这个很重要,一旦要用某个变量,一定要先定义再使用,否报错ReferenceError 4.暂时性死区 只要块级作用域内存在 ...
分类:
其他好文 时间:
2018-03-12 18:43:38
阅读次数:
126
ECMAScript是JavaScript的标准,JavaScript是ECMAScript的实现。 let: 为JS新增块级作用域。 (1)let命令声明的变量是局部变量,仅在let所在代码块有效; (2)let声明的变量不存在变量提升; (3)块级作用域内let声明的变量,不受外部的影响(暂时性 ...
分类:
其他好文 时间:
2018-03-03 15:30:18
阅读次数:
129
1、let的作用域与const相同,支持块级作用域,并且只在声明所在的块级作用域内有效 2、二者都不存在变量提升,并且存在暂时性死区,只能在声明的位置后面使用 3、在一个作用域内,都不可重复声明,不然会报错 在es5中,只有全局作用域和函数作用域,没有块级作用域,而es6中的let为javasrci ...
分类:
其他好文 时间:
2018-03-01 13:25:17
阅读次数:
122
在构造函数中定义特权方法: 利用函数的块级作用域,然后在里面创建了两个特权方法,两个特权方法作为构造函数的闭包可以访问到私有变量name,所以创建构造函数的实例之后只能通过这两个特权方法访问到name这个私有变量(并且每个实例的name不是同一个) 在私有作用域中创建构造函数 首先创建了一个私有作用 ...
分类:
其他好文 时间:
2018-03-01 00:40:09
阅读次数:
192
1、变量声明(1)内层变量覆盖外层变量(即后面的覆盖前面的)(2)循环变量的声明,i值在全局范围内有效,所以最后输出的都是最后一轮i的值(3)let、const的引入,为JS增加了块级作用域的概念(const一旦声明,常量的值就不能改变)2、原型、构造函数、继承 引入了class类的概念,先用cla ...
分类:
其他好文 时间:
2018-02-24 20:47:27
阅读次数:
152
ECMAScript 中块级作用域的介绍,以及let命令和const命令的深入解读 ...
分类:
其他好文 时间:
2018-02-24 18:05:34
阅读次数:
168
众所周知,在ES6之前,JavaScript是没有块级作用域的,如下图所示: 学过其他语言的同学肯定有点诧异,为什么会这样呢?因为js还是不同于其他语言的,在ES5中,只有全局作用域和函数作用域,并没有块作用域,当然我们可以实现块作用域的功能。看下面代码: 在这段段代码中,我们使用立即执行函数(II ...
分类:
Web程序 时间:
2018-02-23 13:23:50
阅读次数:
216
原理 设置一个块级作用域溢出的效果,只需要在外部块的位置上设置overflow:scroll和height:xx即可。 此时,块级作用域的内容位移超出外部块的位移就会出现滚动条,当内部块滚动时,我们能看到滚动效果。这里的实现方式有二种,对父元素(简称外部块)进行设置(top:0和bottom:0)能 ...
分类:
其他好文 时间:
2018-02-20 11:49:57
阅读次数:
163