资讯专栏INFORMATION COLUMN

ES3/5模拟实现ES6块级作用域方式探究

2bdenny / 669人阅读

摘要:其中就包括定义块级作用域的关键字块级作用域如何用低版本模拟如何用低版本模拟加强版如何用低版本模拟自调用函数版

简述

在JavaScript编程中,当我们使用关键字var时,该变量是在距离最近的函数内部或是在全局词法环境中定义的,即函数作用域。这是JavaScript由来已久的特性,{}并不一定限制变量作用域的模式也困扰了许多从其他语言转向JavaScript的开发者。
随着前端工程的发展壮大ECMA也感觉JavaScript对于编写大型项目来说有些力不从心和不可编织的复杂度。于是ECMA吸纳了许多语言的优点并融入新版本的ES规范。
其中就包括定义块级作用域的关键字:const let

ES6块级作用域
{
    {
        let as = 1;
        as = 2333;
    }
    function look(){
        console.log(as);
    }
    // look();//R...Error
}
如何用低版本模拟: try catch
try{
    throw undefined
}catch(v){
    try{
        throw 1
    }catch(as){
        as = 2333;
    }
     function look(){
        console.log(as);
    }
    // look();//R...Error
}
如何用低版本模拟: try catch + with加强版
{
    {
        let a = 1;
        let b = 2;
        a = 2333;
        b = 444;
    }
    function look(){
        console.log(a);
    }
    // look();//R...Error
}
//=>>
try{
    throw undefined
}catch(__e__){
    try{
        throw {a:1,b:2}
    }catch(_$$scope$$_){
        with(_$$scope$$_){
            a = 2333;
            b = 444;
        }
    }
     function look(){
        console.log(a);
    }
    // look();//R...Error
}

如何用低版本模拟: 自调用函数版
;(function(){
    (function(){
        var as = 1;
        as = 2333;
    })();
    function look(){
        console.log(as);
    }
    look();//R...Error
})();

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

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

相关文章

  • ES6系列】变量与块级作用

    摘要:不允许在相同作用域内,重复声明同一个变量。如但是在中则不再必要了,我们可以通过块级作用域就能够实现本次主要针对中的变量和块级作用域进行了梳理学习,并且通过与的实现方式进行了对比,从而看出其变化以及快捷与便利。 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可...

    PascalXie 评论0 收藏0
  • JavaScript 语言核心笔记(持续更新)

    摘要:在同一个块内,不允许用重复声明变量。中为新增了块级作用域。自带遍历器的对象有数组字符串类数组对象对象的对象等和结构对象。返回一个遍历器,使遍历数组的键值对键名键值。 目录 1.语法 2.类型、值和变量 3.表达式和运算符 4.语句 5.数组 6.对象 7.函数 8.全局属性和方法 9.词法作用域、作用域链、闭包 10.原型链、继承机制 11.this的理解 12.ES5新特性 13.E...

    suosuopuo 评论0 收藏0
  • ES6系列文章 块级作用

    摘要:声明之函数作用域和全局作用域。块级作用域不能重复声明临时性死区等特性用来解决变量存在的种种问题。块级作用域终于在外面访问不到了。一些常量声明使用声明的变量名全部大写。 ES5之前javascript语言只有函数作用域和全局作用域,使用var来声明变量,var声明的变量还存在变量提升使人困惑不已。我们先来复习一下ES5的var声明,再对比学习let和const 。 var var声明之函...

    赵连江 评论0 收藏0
  • JS 作用 闭包 this 原型 知识点总结

    摘要:如果你能看懂以下两张图那就可以跳过本总结了当然点个赞再走啊喂啊喂分割线你不知道的上册作用域和闭包和查询可以理解为查找变量赋值的目标和源头当然赋值可以是隐晦的查询失败将在严格模式下导致抛出非严格模式下则会自动创建新变量额分别是修改原有作用域和 如果你能看懂以下两张图, 那就可以跳过本总结了, 当然, 点个赞再走啊喂! (#`O′)! showImg(https://segmentfau...

    warnerwu 评论0 收藏0
  • JavaScript之变量及作用

    摘要:所以的作用域是静态作用域,也叫词法作用域。总结是一门基于词法作用域静态作用域的语言,会沿着作用域链像气泡一样向外部寻找变量声明。又是函数作用域的语言,在中,使用和关键字后,能让变量处于块作用域中,而且不存在声明提升。 本文共 1700 字,读完只需 7 分钟 概述 变量,编程语言中我们用来模拟现实概念的工具,比方说,变量可以表示对象,数组,数字,字符。既然是工具,那么就用工具的适用范围...

    Faremax 评论0 收藏0

发表评论

0条评论

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