zoukankan      html  css  js  c++  java
  • js词法分析

    /词法分析

    1先分析参数

    2在分析变量声明

    3分析函数声明

    一个函数能使用的局部变量就从上面的3步分析而来

    具体步骤:

    0:函数运行前的1瞬间,生成Active Object(活动对象),下称AO

    1:把声明的参数形成Ao的属性,参数的值即属性的值;;接收参数,形成AO相应属性的值

    2:分析变量声明,如var age;

    如果Ao上还没有age属性,则添加age属性,值是undefined;

    如果AO上已经有age属性,则不做任何处理

    3 分析函数声明,如function foo(){};

    则把函数赋给AO.foo()属性

    注:如果此前foo属性已经存在,则被无情覆盖

    /

    function t(age){

    alert(age);

    }

    t(5);//5

    t();//undefined

    /词法分析过程:

    AO(age:undefined)

    运行过程:

    t(5)    AO.age=5;alert(AO.age);//5

    t()    AO.age没有得到赋值,还是undefined/

    function t2(){

      var age=99;

      alert(age);

    }

      t2(5);

    /分析过程:

    0:形成AO={};

    1: 分析形参 AO={age:undefined;}

    2:分析var age,发现AO已有age属性,不做任何影响

    执行过程:

    AO.age=99;

    alert(AO.age);//99

    /

    function a(b){

      alert(b);

      function b(){

      alert(b);

      }

      b();

    }

    a(1);

    /分析过程

    0:AO={};

    1:分析参数AO={b:undefined;}

    接收参数AO={b:1}

    2:分析var声明,此函数没有var

    3:分析函数声明,AO={b:function(){alert(b);}}

    执行期

    alert(b);//function

    b();//由作用域寻找到a函数中的b,即function ,alert出来

    /

    function a(b){

      alert(b);

       b=function(){

      alert(b);

      }

      b();

    }

    a(1);

  • 相关阅读:
    编程入门之结构体
    编程入门之函数理解
    编程入门之编码风格
    Linux基础 30分钟GDB调试快速突破
    GDB实战
    linux下终端游戏
    DSP学习教程基于28335(一)
    Linux内核模块编程可以使用的内核组件
    Windows10下配置Linux下C语言开发环境
    Git常规配置与基本用法
  • 原文地址:https://www.cnblogs.com/autismtune/p/5178432.html
Copyright © 2011-2022 走看看