• 对于一些作用域自己的理解,望能帮助某人


    (function(){
    aa();
    f2();
    var f1 = function aa(){};
    function f2(){
    alert(1);
    }
    })();

    // 按照代码的执行顺序从上往下而言,在执行到未定义函数时报错 aa()未定义( aa is not defined )报错后就此就会中断,后面代码不在执行
    //var f1,function f2(){}; //hoisting,被隐式提升的声明
    // 上面代码中函数声明f2被提升,所以在前面调用f2是没问题的。虽然变量f1也被提升,但f1提升后的值为undefined,其真正的初始值是在执行到函数表达式处被赋予的。所以只有声明是被提升的。

    // var a = 1;
    // function outer(){
    // var b = 2;
    // function inner(){
    // var c = 4;
    // console.log(a);
    // }
    // inner(); //调用inner函数
    // }
    // outer(); //调用rainman函数

    //JavaScript的作用域链
    //观察alert(a);这句代码。JavaScript首先在inner函数中查找是否定义了变量a,如果定义了则使用inner函数中的a变量;如果inner函数中没有定义a变量,JavaScript则会继续在onter函数中查找是否定义了a变量,在这段代码中outer函数体内没有定义a变量,则JavaScript引擎会继续向上(全局对象)查找是否定义了a;在全局对象中我们定义了a = 1,因此最终结果会弹出'1'。

    //作用域链:JavaScript需要查询一个变量x时,首先会查找作用域链的第一个对象,如果以第一个对象没有定义x变量,JavaScript会继续查找有没有定义x变量,如果第二个对象没有定义则会继续查找,以此类推。

    //上面的代码涉及到了三个作用域链对象,依次是:inner、outer、window。

  • 相关阅读:
    简洁搭建hadoop伪分布式文件系统
    在腾讯云下搭建hadoop伪分布式系统
    在腾讯云下搭建hadoop伪分布式系统
    Maven是什么
    地三鲜
    GitHub Pages搭建博客HelloWorld版
    JMS-ActiveMQ
    关于爱情(陈果)-笔记
    新人入职培训
    第三方平台接入汇总
  • 原文地址:https://www.cnblogs.com/lrbee/p/6011550.html
Copyright © 2020-2023  润新知