zoukankan      html  css  js  c++  java
  • 480 重复声明

    var a = 12;
    var a = 13;
    console.log(a); //  => 13
    
    
    // --------------------------------------------------
    
    
    
    let a = 12;
    let a = 13; //  => Uncaught SyntaxError: Identifier 'a' has already been declared
    console.log(a);
    
    
    // --------------------------------------------------
    
    
    
    /*
     * 全局作用域(栈内存)
     *   1.变量提升
     *   2.代码执行 
     */
    console.log(1); //   => 这行代码就已经不会执行了
    let a = 12;
    console.log(a);
    let a = 13;  //   => Uncaught SyntaxError: Identifier 'a' has already been declared
    console.log(a);
    
    
    // --------------------------------------------------
    
    
    console.log(1); //  => 1
    console.log(a); //  => Uncaught ReferenceError: Cannot access 'a' before initialization
    let a = 12;
    
    
    // --------------------------------------------------
    
    
    //   => 所谓重复是:不管之前通过什么办法,只要当前栈内存中存在了这个变量,我们使用let/const等重复再声明这个变量就是语法错误
    console.log(a);
    var a = 12;
    let a = 13; //  => Uncaught SyntaxError: Identifier 'a' has already been declared
    console.log(a);
    
    
    // --------------------------------------------------
    
    
    fn();
    function fn(){ console.log(1); }
    fn();
    function fn(){ console.log(2); }
    fn();
    var fn = function(){ console.log(3); }
    fn();
    function fn(){ console.log(4); }
    fn();
    function fn(){ console.log(5); }
    fn();
    
    
    // --------------------------------------------------
    
    
    // 补充的案例
    // 打印结果说明fn提升到了var语句的前面。但是var 声明的fn怎么提升呢?我猜比function声明的函数fn的提升还要往上,提升到了function fn前面。如果是在后面,那执行第一个fn()的时候,就应该报fn不是函数的错误
    console.log(fn) // ƒ fn() { console.log(5); }
    fn(); // 5
    console.log(fn) // ƒ fn() { console.log(5); }
    // var fn = 111 // 改变fn的值为111
    fn(); // Uncaught TypeError: fn is not a function
    function fn() { console.log(1); }
    fn();
    function fn() { console.log(2); }
    fn();
    var fn = function () { console.log(3); }
    fn();
    var fn = 222
    fn()
    function fn() { console.log(4); }
    fn();
    function fn() { console.log(5); }
    fn();
    
    
    // --------------------------------------------------
    
    
    // 补充的案例
    console.log(fun) // 函数fun
    console.log(a) // undefined
    fun(); // undefined  90
    var a = 100;
    function fun() {
        // undefined,说明var声明的变量a提升在function声明的函数前,如果不是,则应该报错,找不到a
        console.log(a);  
        a = 90;
        console.log(a);    // 90
    }
    // fun(); //? ?
    console.log(a); // 100
    
  • 相关阅读:
    struts2 之 Action的创建方式
    struts2 之 struts2数据处理
    SuperMap for WebGL 9D 加载平面坐标系三维场景
    SuperMap-WebGL-坐标系及转换说明
    SuperMap -WebGL 实现地球的背景透明并显示自定义图片
    转载: ssh连接上华为云Linux服务器,一会就自动断开
    Arcgis瓦片--js客户端加载
    Arcgis瓦片--数据获取
    转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案
    转载-浏览器优化中的2-5-8原则
  • 原文地址:https://www.cnblogs.com/jianjie/p/13192940.html
Copyright © 2011-2022 走看看