• 作用域


    ------------>作用域

           因为javascript编译的过程分为了3步

            1.词法分析,也叫单词拆解,比如  var t=2;那么就变成了 var , t ,= , 2;

            2.语义分析  比如上面那个就变成了一个抽象树,类似lamda表达式中的数

            3.代码生成  将上面生成的数据流转换成对应的机器代码,一般来说就是为上面生成的变量生成内存

        总结:变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如
        果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对
        它赋值。

    ------------->查询

            1.LHS  也就是一般说的"="左边

            2.RHS  等号右边,也就是一般说的源

            考虑下面代码:     

    function foo(a){
        var b=a;
      console.log(a); 
        return b+a;
    }
    foo(2);

            上面的代码发生了几次LHS/RHS?

            LHS:a=2,b=a  -->2次

            RHS:foo(),b=a,console,b,a,console.log(a)   -->6次

          考虑下上面所说的语法分析阶段,那么我们是不是可以说变量在生产之前就已经存在某个作用域中了!!!

    ------------->嵌套作用域

          考虑下面的代码

    function foo(a){
       console.log(a+b);//6
    }
    var b=3;
    foo(3);

           这个就是一个简单的嵌套作用域的例子,我们可以看出在foo的函数作用域中并没有变量b

              但是执行foo(3)又没有报错,这就说明b是在全局作用域中找到的

    Hold on, everything is possible.
  • 相关阅读:
    5555
    3333
    4444
    试验2
    Android之TextView灵活使用(转载)
    Android之使用Android-query框架进行开发(一)(转载)
    Android 之Html的解析(使用jsoup)
    Android之动画的学习(转载)
    Android之官方下拉刷新控件SwipeRefreshLayout
    Android之sqlite的使用 (转载)
  • 原文地址:https://www.cnblogs.com/student-note/p/6631960.html
Copyright © 2020-2023  润新知