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

    一共分2个阶段,3步

    一分析阶段

    创建一个AO对象,开始给对象增加属性

      1 看参数 参数有值直接写到对象

     2 看var声明,如果参数跟var 声明相同,不做任何处理。如果不相同增加到AO对象里。注意只是声明跟赋值无关跟赋值无关跟赋值无关跟赋值无关跟赋值无关

     3 看函数,如果AO对象又跟函数名相同的属性,则属性值直接被替换成函数,没有函数略过

    分析完成,开始从上往下执行代码

    二执行阶段

    1 走到var 声明变量赋值的时候就赋值,在这之前的输出都与赋值无关

    2 走到函数执行时候,在生成一个AO对象,内嵌函数可以随着作用域往上寻找最近的值

    示例

    function a(age) {
    var age;
    console.log(age);//标记1
    var age = 25;
    console.log(age);//标记2

    function age() {
    console.log(age);//标记3
    }
    age();//标记4
    console.log(age);//标记5

    }
    a(1);
    分析:
    1 有参数写到对象里。a.AO={age:1}
    2 有var跟参数同名,忽略 a.AO={age:1}
    3 有函数,跟参数同名替换值 a.AO={age:function age(){console.log(age)}}
    执行:
    标记1 a.AO.age = function age(console.log(age)){}
    标记1下一行赋值 则 a.AO={age:25}
    标记2 a.AO.age = 25
    执行标记4 25()不是函数报错
    标记3 报错了不执行了
    标记5 报错了不执行了

  • 相关阅读:
    实验三 编程、编译、连接、跟踪
    第三章 寄存器知识总结
    实验2 用机器指令和汇编指令编程
    实验1 查看cpu和内存,用机器指令和汇编指令编程
    第二章寄存器知识总结
    汇编语言第一章基础知识总结
    打印数字正方形
    打印空心正方形
    打印正方形
    整数运算
  • 原文地址:https://www.cnblogs.com/niuniuniu/p/8663264.html
Copyright © 2011-2022 走看看