摘要:特点是块级作用域的特点得到明显的体现再看一个中的循环变量泄露为全局变量很明显成了全局变量。本人目前了解的还不够深比如中添加一个新的词汇暂时性死区,简称。
(个人理解ES6就是对ES5的BUG修改和升级)
废话不多说今天要探讨的是 var与let
ECMAScript 6 入门 作者:阮一峰
下面是个人总结:
let不允许在相同作用域内,重复声明同一个变量。
let 特点是块级作用域
先来看一下ES5中时常出现的变量提升的问题!
var tmp = new Date(); function f() { console.log(tmp); if(false) { var tmp = "hello world"; } console.log(tmp); }
输出结果为undefined,原因在于变量提升,导致内层的tmp变量覆盖了外层的tmp变量。
在ES6的语法中解决的变量提升的问题 是这么实现的!
function f1() { let n = 5; if (true) { let n = 10; } console.log(n); // 5 }
这里大家可以自己试验 将内层 和外层的 n 分别用var let 来定义 就发现
let不允许在相同作用域内,重复声明同一个变量。
lef 特点是块级作用域
let 的特点得到明显的体现!
再看一个ES5中的循环变量泄露为全局变量
var s = "hello"; for (var i = 0; i < s.length; i++) { console.log(s[i]); } console.log(i); // 5
很明显i成了全局变量。
ES6中
for (let i = 0; i < 10; i++) { // ... } console.log(i); // ReferenceError: i is not defined
这表明,let声明的变量只在它所在的代码块有效。
本人目前了解的还不够深!
比如ES6中添加一个新的词汇 “暂时性死区”(temporal dead zone,简称 TDZ)。
var tmp = 123; if (true) { tmp = "abc"; // ReferenceError let tmp; }
我可以把它理解为ES6解决不了的BUG!非要给他定义成一个词汇么?(笑死)!
也希望大牛前来解答探讨!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/98943.html
摘要:前端日报精选三思而后行想提高团队技术,来试试这个套路如何开发一个插件学习笔记块级作用域绑定译文详解带来的个重大变化中文周二放送画图知乎专栏第期新特性译配置译高性能视差滚动行代码构建区块链知乎专栏渲染器修仙之路之拷贝对象已 2017-07-25 前端日报 精选 SSR 三思而后行想提高团队技术,来试试这个套路!如何开发一个 Atom 插件ES6学习笔记:块级作用域绑定【译文】详解VUE2...
摘要:如下示例构造函数实例化对象新特性使用类实例化对象引入了类这一概念,可以通过关键字,定义类。否则报错,这是类和构造函数的一个主要区别。其实,的类,可以看作是构造函数的另外一种写法。 前言 类语法是ES6中新增的一个亮点特性,下文简单对类的使用进行简要说明(仅作为个人层面的理解) js传统模式实例化对象方法——prototype 在JavaScript中,实例化一个对象的传统使用方法是通过...
摘要:任何数据结构只要部署接口,就可以完成遍历操作即依次处理该数据结构的成员。的遍历某个数据结构过程是这样的比如对进行遍历创建一个指针对象,指向当前数组的起始位置。 Iterator 这真是毅种循环 Iterator不是array,也不是set,不是map, 它不是一个实体,而是一种访问机制,是一个用来访问某个对象的接口规范,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Ite...
阅读 511·2023-04-26 01:39
阅读 4414·2021-11-16 11:45
阅读 2575·2021-09-27 13:37
阅读 862·2021-09-01 10:50
阅读 3533·2021-08-16 10:50
阅读 2196·2019-08-30 15:55
阅读 2953·2019-08-30 15:55
阅读 2233·2019-08-30 14:07