zoukankan      html  css  js  c++  java
  • 作用域

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

           因为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.
  • 相关阅读:
    mysql官网下载链接——绿色版&安装版
    eclipse中去掉警告提示
    java用servlet、cookie实现一个阅读记录
    eclipse中的错误解决——Servlet cannot be resolved to a type
    eclipse——jsp字体设置
    eclipse——添加Tomcat7.0服务器
    eclipse中的错误解决——The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    eclipse——JavaEE插件
    OpenMP用法大全
    __new__ __init__区别
  • 原文地址:https://www.cnblogs.com/student-note/p/6631960.html
Copyright © 2011-2022 走看看