• 原来竟然还有这种局部变量!


    我们知道,ES5只有函数作用域,可以利用函数来隐藏“信息”,把需要暴露的信息“最小化”,成为“最小特权原则”。

    但昨天看到其实还有另一种局部变量,从ES3时代就有了,这就是catch(error)中的error变量(即错误变量)只能在catch块中访问,外面访问不到。

    try{
        console.log(a);
    } catch(error){
        console.log(error);   // ReferenceError: a is not defined
    }
    
    // 在catch块外部访问error
    
    console.log(error);       // 错误!      

    但在catch块内部(即花括号内部)var声明的变量依然属于全局变量,外部依然可以访问。

    try{
        console.log(a);
    } catch(error){
        var b="lala";
    }
    
    // 外部访问变量b
    
    console.log(b);    // lala
    
    console.log(window.hasOwnProperty("b"));    // true

    可见,在catch块花括号里声明的变量依然正常被当作全局变量被添加到window对象里。

    先写这么多吧。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 相关阅读:
    测试及开发中应当要考虑的安全问题
    31、Python之会话管理cookie和session
    Scrapy爬虫框架入门
    30、Python之web框架django进阶篇
    装饰器函数
    函数初始后续与进阶
    函数初识
    文件操作
    日本语自学
    编码,集合
  • 原文地址:https://www.cnblogs.com/linweinb/p/8287032.html
Copyright © 2020-2023  润新知