作用域解析题

  1.var a=12

    function fn(){

    console.log(a)       //undefined

    var a=45

    console.log(a)      //45

    }

  fn()

  案例解析画图:

  

  2.var a=12;

     function fn(){

    console.log(a)        //12

    a=45

    console.log(a)        //45

    }

  fn()

  画图分析

  

  3.function fn(){

    console.log(11)

    function ff(){

      console.log(22)

    }

    ff()

  }

  fn()      //11   22

  ff()        //xxx.is not defined

  画图解析:

  

  4. 函数递归(函数自己内部自己调用自己)

  function fn(){

    xonsole.log(5)

    fn()

  fn()

   画图解析

  

  5.function fn(){

    console.log(12)

    }

  var as=fn()

  console.log(as)      //每个函数都有自己的返回值,return,return是什么就返回什么,如果没有就是undefined 

  画图解析

  

  6.var a=12;

      function fn(){

     console.log(a)      //undefined

       return 4

      var a=45

    }

  fn()

  画图解析:

  

  7.var a=45

    function fn(a){

    console.log(a)     //undefined

    }

  fn()

   画图解析:

  

 

   8.var a=123

      function fn(){

    alert(a)     //123

    }

  fn()

  画图解析:

  

  9.var a=123

     function fun(){

    alert(a)

    var a=456

    }

  fun()       //undefined

  alert(a)     //123

  画图解析:

  

  10.var a=123

   function fun(){

    alert(a)

    a=456

  }

  fun()     //123

  alert(a)       //456

  画图解析:

  

  11.var a=123

    function fun(a){

      alert(a)

      a=456

    }

  fun()          //undefined

  alert(a)      //123

  画图解析:

  

  12.var a=123

   function fun(a){

      alert(a)

      a=456

    }

  fun(123)

  alert(a)

   画图解析:

  

  形参于实参的区别:

  形参:相当于一个私有变量,

  实参:对形参的赋值,如果是数字,则直接对形参赋值,如果是字母,则会通过作用域链查找字母的赋值情况,然后给形参传参,如果没有,则意味着执行模块没有对形参赋值的情况,就需要通过形参来向上查找

  13.console.log(totai)         //undefined

       var total=0;

    function fn(num1,num2){

      console.log(total)       //undefined

      var total=num1+num2

      console.log(total)      //300

     }

  fn(100,200)

  console.log(total)        0

  画图解析:

  

  14.var to=1;

       function fn(n1,n2){

    console.log(to)

    to=n1+n2

    console.log(to)

  fn(10,20)

  console.log(to)

  画图解析:

  

  15.function fn(a){

    console.log(a)

    var a=123

    console.log(a)

    function a(){}

    console.log(a)

    var b=function(){}

    console.log(b)

    function d(){}

    }

  fn(1)

  画图解析:

  

   如果形参,声明变量,函数名同名时,在预解释的时候只声明一次,其他的都是在赋值时后面会把前面的覆盖掉

   权重为 形参<声明变量<函数名

  16.function test(a,b){

    console.log(b)      //function b(){}

    console.log(a)      //1

    c=0;

    var c;

    a=3;

    b=2;

    console.log(b)    2

    function b(){}

    function d(){}

    console.log(b)     2

  }

  test(1)

   画图解析:

  

  17.function test(a,b){

    console.log(a)

    console.log(b)

    var b=234

    console.log(b)

    a=123;

    console.log(a)

    function a(){}

    var a

    b=234

    var b=function(){}

    console.log(a)

    console.log(b)

    }

  test(1)

  画图分析:

  

  18. 销毁案例  (闭包)

  function fn(){

      var a=12;

      a++

      console.log(a)

   }

  fn()     13

  fn()     13

  fn()     13

  画图解析:

  

 

   19.解决办法

  function fn(){

    var a=12

    return function(){

      a++

      console.log(a)

      }

   }

  var ss=fn()

  ss()

  ss()

  ss()

   20.+function(){

     var a=5

        function a(){}

     alert(a)   5

     function b(){}

     b=6;

     alert(b)     6

     var c=d=b

    }()

  alert(d)     6

  alert(c)    is not defined

  画图解析:

  

 

转载于:https://www.cnblogs.com/shangjun6/p/10055323.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理期末试CSND包括以下几个方面的内容: 首先,试可能会涉及到编译原理的基础知识,如编译器的基本原理、编译器的工作流程、编译器前端和后端的任务等。学生需要了解编译器的整体架构和各个组成部分之间的关系。 其次,试可能会涉及到词法分析和语法分析的知识。学生需要了解有限自动机和正则表达式的基本概念,并能够使用它们来设计和实现一个简单的词法分析器。同时,学生还需要了解语法分析的方法,如LL(1)文法和LR(1)文法,并能够使用自顶向下或自底向上的方法来进行语法分析。 再次,试可能会涉及到语义分析和中间代码生成的知识。学生需要了解语义分析的任务和方法,如变量的声明和作用域、类型检查和类型转换等,并能够设计和实现一个简单的语义分析器。同时,学生还需要了解中间代码的表示和生成方法,如四元式和三地址码,并能够将源代码转化为中间代码。 最后,试可能会涉及到优化和目标代码生成的知识。学生需要了解常见的优化技术,如常量传播、死代码消除和循环展开等,并能够应用这些技术对中间代码进行优化。同时,学生还需要了解目标代码的表示和生成方法,如基本块和流图,并能够将中间代码转化为目标代码。 总之,编译原理期末试CSND的考察范围相对广泛,涉及到了编译器的各个方面的知识和技术。学生需要充分理解并掌握这些知识,通过理论和实践的结合来解答试。同时,学生还需要具备分析和解决问的能力,能够灵活运用所学知识解决实际问

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值