摘要:在使用定义变量时,一开始就会形成封闭作用域,在声明变量之前是无法使用该变量的。这个特点是为了弥补的缺陷。初始化没有赋值会被默认在初始化时必须赋值。创建到初始化的代码块就是暂时性死区。
在使用let/const定义变量时,一开始就会形成封闭作用域,在声明变量之前是无法使用该变量的。这个特点是为了弥补var的缺陷。
if(true){ name = ‘123’ name is not defined let name = ‘456’ }解析原理:
其实let/cosnt和var一样都会有提升的效果,不同的是:
var 在创建时就会被初始化,赋值为undefined
let/const在进入到块级作用域时,因为提升的原因会先被创建,但不会被初始化。直到使用let/const定义时,才会被初始化。let初始化没有赋值会被默认undefined;const在初始化时必须赋值。创建到初始化的代码块就是暂时性死区。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/109746.html
摘要:会出现这样的情况是因为拥有暂时性死区。规定暂时性死区和语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。 首先我们应该知道js引擎在读取js代码时会进行两个步骤: 第一个步骤是解释。 第二个步骤是执行。 所谓解释就是会先通篇扫描所有的Js代码,然后把所有声明提升到顶端,第二步是执行,执行就是操作一类的。 我们先来看个简单的变量提升...
摘要:声明一个只读的常量。的作用域与命令相同只在声明所在的块级作用域内有效。这在语法上,称为暂时性死区,简称。暂时性死区也意味着不再是一个百分之百安全的操作。重复声明是允许在相同作用域内重复声明同一个变量的,而与不允许这一现象。 转载自阮一峰老师的ES6入门,稍有修改 1.基本概念MDN var声明了一个变量,并且可以同时初始化该变量。let语句声明一个块级作用域的本地变量,并且可选的赋予...
摘要:声明的变量只在其所在的代码块内有效。只要在声明之前使用这些变量,就会报错。在语法上称为暂时性死区有时候,会不经间遇到比较隐蔽的死区,不太容易被发现。不允许重复声明不允许在相同的作用域内声明同一个变量。一旦声明,其值就不能再改变。 let && const let let声明的变量只在其所在的代码块内有效。 { let a = 10; } console.log(a) //R...
摘要:明确规定,如果区块中存在和命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。暂时性死区意味着不再是一个百分百的安全操作了不允许重复声明不允许在相同作用域内,重复声明同一个变量。 let,const共同拥有的特点 提供了代码块级作用域;(代码块是用{}来实现的) 不存在变量提升,先声明再使用; 存在暂时性死区; 不允许重复声明; ...
摘要:想阅读更多优质文章请猛戳博客一年百来篇优质文章等着你引用规范作者一条最近的推特变量提升是一个陈旧且令人困惑的术语。变量提升部分提前激活是在和之前声明变量的一种较老的方法。 为了保证可读性,本文采用意译而非直译。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 引用 ES6 规范作者 Allen Wirfs-Brock一条最近的推特: 变量提升是一个陈旧且令人困惑的...
阅读 3417·2023-04-25 18:14
阅读 1504·2021-11-24 09:38
阅读 3218·2021-09-22 14:59
阅读 3032·2021-08-09 13:43
阅读 2532·2019-08-30 15:54
阅读 541·2019-08-30 13:06
阅读 1520·2019-08-30 12:52
阅读 2697·2019-08-30 11:13