zoukankan      html  css  js  c++  java
  • 原来竟然还有这种局部变量!

    我们知道,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对象里。

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

  • 相关阅读:
    一些Redis面试题
    PHP中类和对象
    PHP中普通方法和静态方法
    PHP中普通属性和静态属性
    PHP中对象的传值方式
    PHP创建对象的几种形式
    面向对象与面向过程思想区别
    mysql中联合查询
    mysql中用户和权限
    mysql中事务
  • 原文地址:https://www.cnblogs.com/linweinb/p/8287032.html
Copyright © 2011-2022 走看看