zoukankan      html  css  js  c++  java
  • JS预编译原理

    一 预编译之前基本概念:

    1  函数形参(parameter)和实参(argument)的区别:形参相当于函数中定义的变量,实参是在运行时的函数调用时传入的参数。即:形参就是函数声明时的变量,实参是我们调用该函数时传入的具体参数。

    1   function add(a, b) {
    2     return a + b // a,b就是形参
    3   };
    4   add(1, 2) // 1,2就是实参

    2 js变量名与函数重名问题:https://blog.csdn.net/Charles_Tian/article/details/79775909

    注意:函数作用域是首先从内部查找,由里向外顺序查找.

    • 要知道js解析变量声明的顺序
    • 函数声明和变量声明会置顶且函数声明更优先!
    • 作用域链的查找顺序是由里向外,js执行代码顺序是自上往下

    二 js预编译过程:https://blog.csdn.net/qq_42383764/article/details/105229455

    js运行代码共分三步

    1. 语法分析,语法分析就是浏览器先浏览一下整体的代码有没有少写分号、单词拼错等语法的错误。

    2. JS预编译。本质是创建AO对象或GO对象,对其属性的操作。预编译发生在函数执行前一刻。

    3. 解释性执行。就是一行一行的读取代码执行代码。

    全局域解析:GO:Gobel Object,是全局对象,GO对象跟window对象是同一个对象。可以理解为window对象有两个名字 window == GO。 

    函数JS预编译:AO对象:Activation Object,指活动性对象,也叫执行期上下文,就是我们通常所说的作用域。这里指函数的局部作用域。预编译时AO对象的属性对应的属性值,会在后续代码执行过程中发生变化,也就是会被覆盖。

    语法分析常见错误分析:https://www.cnblogs.com/terrymin/p/14542419.html

  • 相关阅读:
    探寻京东云核心竞争力的源泉
    在线公开课 | 教你如何自行搭建一个威胁感知大脑?
    推迟学习系统调用
    linux中未实现的系统调用
    man(2) V
    man(2) W
    图像叠加
    man(2) readv writev
    qt 视频播放
    ffmpeg参数
  • 原文地址:https://www.cnblogs.com/terrymin/p/14542700.html
Copyright © 2011-2022 走看看