资讯专栏INFORMATION COLUMN

你会使用ES6 ,但这几点你可能不知道,感觉身体被掏空!

VioletJack / 407人阅读

摘要:的使用我们知道主要有三个特性声明的变量的作用域是块级的中只有全局和函数作用域不能重复声明已存在的变量有暂时死区,不会被提升。的巧用我们知道引入了一个新的数据类型,可以创建一个独一无二的值但并不是字符串。

let 的使用

我们知道 let 主要有三个特性:

let 声明的变量的作用域是块级的 (es5中只有全局和函数作用域)

let 不能重复声明已存在的变量;

let 有暂时死区,不会被提升。

我们早期面试的时候,经常会考的一道题目是:

// 代码段1
var liList = document.querySelectorAll("li") // 共5个li
for( var i=0; i

大家都知道依次点击 li 会打印出 5 个 5。如果把 var i 改成 let i,就会分别打印出 0、1、2、3、4:

// 代码段2
var liList = document.querySelectorAll("li") // 共5个li
for( let i=0; i

然而,你会发现 for( let i=0; i

于是我们方方老师大佬去看 MDN 的例子,发现鸡贼的 MDN 巧妙地避开了这个问题,它的例子是这样的:

它直接在另外声明了一个 j 来保存, 为什么不直接用 i 呢?MDN 为了简化知识,隐瞒了什么?

经过我们方方老师大佬饥渴精神,不断的查资料,最后他总结这么几句自己的理解:

for( let i = 0; i< 5; i++) 这句话的圆括号之间,有一个隐藏的作用域

for( let i = 0; i< 5; i++) { 循环体 } 在每次执行循环体之前,JS 引擎会把 i 在循环体的上下文中重新声明及初始化一次。

也就是说上面的代码段2可以近似近似近似地理解为:

// 代码段3
var liList = document.querySelectorAll("li") // 共5个li
for( let i=0; i

那样的话,5 次循环,就会有 5 个不同的 i,console.log 出来的 i 当然也是不同的值。

再加上隐藏作用域里的 i,一共有 6 个 i。

这就是 MDN 加那句 let j = i 的原因:方便新人理解。

总得来说就是 let/const 在与 for 一起用时,会有一个 perIterationBindings 的概念(一种语法糖)。

let 到底有没有提升

之前我写过一篇 《你一度模糊的javascript执行上下文详解》, 说到js在一段

当然这个除了面试感觉没啥软用,但这能告诉你 get, set有什么用。

Symbol的巧用

我们知道:ES 6 引入了一个新的数据类型 Symbol, Symbol 可以创建一个独一无二的值(但并不是字符串)。

假如现在有一个对象,里面有一个私有属性,只能自己内部使用,外部调用不到,这时我们可以利用 Symbol来做:如下:

{
    let a = Symbol();
    let obj = {
        name: "小智",
        age: 18,
        [a]: "这个是私有属性"
    }
    window.obj = obj;
}

如下,我有在外部无语你怎么用,都是调用不到 “这个是私有属性”,你可能会说这个有啥用,我只能回答你装x用的,面试可能也会问你 我们如何弄一个隐藏属性呢?答案就是 Symbol ,满婚满婚满婚。

以上,就是 Symbol 的简述,更详细更权威的知识参考下面的自学链接。

MDN: Symbol - JavaScript
阮一峰:ECMAScript 6入门

参考:

我用了两个月的时间才理解 let

一个笨笨的码农,我的世界只能终身学习

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98136.html

相关文章

  • 佛系程序员的月薪五万指南

    摘要:大师错,这是你的第二个误区碎片时间碎片学习青年这有什么问题吗知乎朋友圈头条很多文章我看起来都很有道理啊,而且学的很快大师标题党震惊党鸡汤文养生文我有一个朋友文。。。。。。 摘要: 大师:很简单,我这里有一份佛系月薪 5 万指南,我看你骨骼清奇、脑门光亮,一看就是将要大富大贵之人,这份指南可以助你快速实现小目标! showImg(https://segmentfault.com/img/...

    crossea 评论0 收藏0
  • 佛系程序员的月薪五万指南

    摘要:大师错,这是你的第二个误区碎片时间碎片学习青年这有什么问题吗知乎朋友圈头条很多文章我看起来都很有道理啊,而且学的很快大师标题党震惊党鸡汤文养生文我有一个朋友文。。。。。。 摘要: 大师:很简单,我这里有一份佛系月薪 5 万指南,我看你骨骼清奇、脑门光亮,一看就是将要大富大贵之人,这份指南可以助你快速实现小目标! showImg(https://segmentfault.com/img/...

    hlcfan 评论0 收藏0
  • 成为优秀的程序员需要到以下几点

    摘要:并且,越是临近项目截止日期,越是需要工作更长的时间。真正优秀的程序员善于与人交往,但大多数程序员缺乏这些能力。项目经验以上的内容如果都精通了,也算是个比较厉害的程序员了。但是对程序员来说,项目经验更加重要。   无论做什么工作, 都希望能做到最好, 就像参与一款游戏, 每个人都希望能赢到最后.程序员工作自然也会有其秘籍, 让我们更快的实现目标。   身体   身体看似最不重要, 其实不...

    verano 评论0 收藏0

发表评论

0条评论

VioletJack

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<