1.块级作用域的引入 在ES6之前,js只有全局作用域和函数作用域,ES6中let关键字为其引入了块级作用域。 { var a = 5; let b = 6; } console.log(a); //5 console.log(b); //b is undefined let声明的变量只能在其所在的 ...
分类:
其他好文 时间:
2018-06-07 14:10:00
阅读次数:
2819
JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话 一、JavaScript中无块级作用域 在Java或C#中存在块级作用域,即:大括号也是一个作用域。 public static void main () { if(1==1){ S ...
分类:
编程语言 时间:
2018-05-30 21:20:14
阅读次数:
214
1在js中只有两种作用域a:全局作用域b:函数作用域在ES6之前,js是没有块级作用域。首先来解释一下什么是没有块级作用域?所以此时 是可以打印输出变量a的值。2:什么是变量提升?在我们的js中,代码的执行时分两步走的,1、解析 2、一步一步执行那么变量提升就是变量声明会被提升到作用域的最顶上去,也就是该变量不管是在作用域的哪个地方声明的,都会提升到作作用域的最顶上去。那么上面这种写法其实等价于下
分类:
Web程序 时间:
2018-05-24 00:08:08
阅读次数:
263
const 1.声明一个只读的常量。一旦声明,常量的值就不能改变,而且必须立即初始化,不能留到以后赋值。 2.const的作用域与let命令相同:只在声明所在的块级作用域内有效。 3. const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。 本质 const实际上保证的, ...
分类:
其他好文 时间:
2018-05-22 13:01:05
阅读次数:
161
1.变量声明--var,const,let 1.1 var - (全局作用域,局部作用域)会有变量提升 1.2 const - 常用来声明常量,且常量不可修改,必须初始化,存在着块级作用域 1.3 let - let定义的变量存在着块级作用域,在函数内定义的变量,对函数外部无影响 2.set ES6 ...
分类:
其他好文 时间:
2018-05-17 18:49:36
阅读次数:
142
问题背景:在写一个非常简单的弹出交互时,定义了一个全局变量和一个方法,这个方法始终调不到这个变量,得到高人指点后,特意总结一下这个知识点; 一、变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在 ...
分类:
Web程序 时间:
2018-05-14 19:55:58
阅读次数:
215
一、基本语法 1.1、声明变量的六种方法 参看地址:http://es6.ruanyifeng.com/#docs/let let:局部变量,块级作用域,声明前使用报错 var:全局变量,声明前使用 undefined const:声明一个只读的常量。一旦声明,常量的值就不能改变。只是内存地址不变, ...
分类:
其他好文 时间:
2018-05-01 15:57:51
阅读次数:
192
const是用来定义常量,一旦声明,其值就不能改变 const声明的常量不得改变值。这意味着,const一旦声明常量,就必须立即初始化,不能留到最后赋值。 const的作用域与let相同:只在声明所在的块级作用域内有效 const变量也不会提升,同样也存在暂时性死区,只能在声明后使用。 与let一样 ...
分类:
其他好文 时间:
2018-04-28 01:24:28
阅读次数:
117
var 存在变量提升 function 存在变量提升,在es6的浏览器中,最好别再块级作用域中用函数声明,用表达式 let 暂时性死区,无变量提升,不再是顶层对象的属性,全局对象与顶层对象脱钩 const 暂时性死区,无变量提升,定义常量,一旦声明,必须马上赋值,不再是顶层对象的属性,全局对象与顶层 ...
分类:
其他好文 时间:
2018-04-27 19:55:09
阅读次数:
162
基本用法: Es5只有全局作用域和函数作用域,没有块级作用域,这就带来了很不合理的场景比如: 我们所期望的是能把var i = 11的值打印出来 Es6新增了let命令,let命令只能在它的代码块中有效,其用法类似var 不存在变量提升 let并不会像var那样发生“变量提升”的现象。所以变量一定要 ...
分类:
其他好文 时间:
2018-04-26 12:27:37
阅读次数:
170