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 报错了不执行了

  • 相关阅读:
    Crystal Reports基础知识
    Dashboard与中国式报表的区别以及常见的Dashboard控件
    函数总结
    SQL Server 索引使用入门
    Linux+C 开发基础
    vi 开发环境~~转载
    linux mysql 基础操作使用
    sourceinsight 快捷键 转帖
    vi 利器
    fedora 7 英文环境 的汉字显示
  • 原文地址:https://www.cnblogs.com/niuniuniu/p/8663264.html
Copyright © 2011-2022 走看看