资讯专栏INFORMATION COLUMN

JavaScript 打脸史之 ES6 作用域 (一)

leeon / 1039人阅读

JavaScript 打脸史之 ES6 作用域 (一)

在先前打 ES 标准中,如果未声明过 a ,在任何位置声明 a = 1 即声明了一个 window 下的全局变量 a;

{
    a = 1
}
for(b=1;b<2;b++){
    c = 3
}
function x(){
    d = 4
}
x()
console.log(a)    //1
console.log(b)    //2
console.log(c)    //3
console.log(d)    //4

而在函数内声明 var a = 1,a 的作用域在当前函数中,否则 a 的作用域即 window ,并且两者都会变量提升;

console.log(a)    //undefined
console.log(b)    //undefined
console.log(c)    //undefined
{
    var a = 1
}
for(var b=1;b<2;b++){
    var c = 3
}
function x(){
    var d = 4
}
x()
console.log(a)    //1
console.log(b)    //2
console.log(c)    //3
console.log(d)    //d is not defined

而当我们需要使用闭包,即实现暴露一个被隐藏的局部变量的时候,我们可以这样来写;

function x(){
    var a = 1
    b = function(){
        console.log(a)
    }
}
x()
b()    //1

我们为了暴露一个隐藏的局部变量,又暴露了一个全局变量 x ,故继续改进,声明一个匿名立即执行函数;

(function(){
    var a = 1
    b = function(){
        console.log(a)
    }
}())
b() //1

为了实现这样的一个功能,我们竟需如此大费周折。

故,ES6 中的 let 应运而生。

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

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

相关文章

  • 你不知道的JavaScriptES6与之未来)

    摘要:然而,临近规范发布时,有建议提及未来的版本号切换为编年制,比如用同来指代在年末前被定稿的所有版本。总得来说就是版本号不再那么重要了,开始变得更像一个万古长青的活标准。 你不知道的JS(下卷)ES6与之未来 第一章:ES的今与明 在你想深入这本书之前,你应该对(在读此书时)JavaScript的最近标准掌握熟练,也就是ES5(专业来说是ES 5.1)。在此,我们决定全方面地谈论关于将近的...

    Julylovin 评论0 收藏0
  • 记录次杭州顺网科技的面试过程

    摘要:以上是面试中笔试涉及到的知识点或者后面被问到的只是点。也许是根据薪资和面试的等级来出题的。我刚面试完回家,吃了一个泡面,回忆下面试题。同时作为传递到构造函数,执行了一次让构造函数里面的属性和方法赋值了一份给。 css 如何水平垂直居中,请尽量多说几种方法?很尴尬,我多次面试都被问到这个问题,fuck 定位(回答了)、table-cell布局、flex布局、translate+relat...

    shiguibiao 评论0 收藏0
  • 记录次杭州顺网科技的面试过程

    摘要:以上是面试中笔试涉及到的知识点或者后面被问到的只是点。也许是根据薪资和面试的等级来出题的。我刚面试完回家,吃了一个泡面,回忆下面试题。同时作为传递到构造函数,执行了一次让构造函数里面的属性和方法赋值了一份给。 css 如何水平垂直居中,请尽量多说几种方法?很尴尬,我多次面试都被问到这个问题,fuck 定位(回答了)、table-cell布局、flex布局、translate+relat...

    caiyongji 评论0 收藏0
  • 从2018百度前端技术学院看代码究竟应该怎么写(2)

    摘要:任务描述参考以下示例代码,页面加载后,将提供的空气质量数据数组,按照某种逻辑比如空气质量大于进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示在网页上污染城市列表第一名福州样例,第二名福州样例,北京上海福州广州成都西安在注 任务描述 参考以下示例代码,页面加载后,将提供的空气质量数据数组,按照某种逻辑(比如空气质量大于60)进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示...

    sixleaves 评论0 收藏0
  • javascript编程小技巧

    摘要:源码的代码质量很高,非常值得我等小辈学习。上面的技巧,若有任何不对,欢迎指正,也欢迎补充过段时间一定要写源码阅读笔记好怕打脸逃 其实主要是性能小技巧。 循环优化 循环体是执行最多的,所以要确保其被最大限度的优化. //提前计算好终止条件,存到局部变量中 for(var i=0, j = document.getElementsByTagName(a).length; i b) { ...

    testbird 评论0 收藏0

发表评论

0条评论

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