预编译

作者: 开心的小哈 | 来源:发表于2018-12-20 11:51 被阅读0次

单线程
解释性语言

js三部曲

语法分析
预编译
解释执行

预编译

预编译发生在函数执行的前一刻

函数声明整体提升
变量 声明提升

详细:
imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有.

function test(){
            var a=b=123;
            console.log(window.b)
        }

a=10;
---->window.a=10;
一切声明的全局变量,全是window的属性
那么window是干什么的?
window就是全局的域
var a=123;
全局变量首次放到电脑磁盘里面就是window
如果你要访问之前定义的a的时候他会先去window里面找a
其实就是
var a=123;
console.log(a)--->window.a其实就是访问的window.a
window里面是全局变量没有局部变量!

四部曲

1.创建AO对象
2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3.将实参值和形参统一
4.在函数体里面找到函数声明,值赋予函数体(不是函数表达式)

全局的预编译是GO===window

练习

// GO{
            // global:100;
        // }
        global=100;
        function fn(){
            console.log(global)//undfind
            global=200;
            console.log(global)//200
            var global=300;
        }
        fn();
        var global;
        
        // AO{
            // global : undfind
        // }

2

// GO{
            // foo:function;
        // }
        function bar(){
            return foo;
            foo=10;
            function foo(){
                
            }
            var  foo=11;
        }
        console.log(bar());
        
        // AO{
            // global : undfind
        // }

3

// GO{
            // foo:10;
        // }
        console.log(bar());
        function bar(){
            foo=10;
            function foo(){
            };
            var foo=11;
            return foo;
        }
        
        // AO{
            // foo : 11
        // }
(window.foo||(window.foo='bar'))

先看小括号再看||

//一旦经历了var 的操作,所得出的属性,window,这种属性叫做不可配置的属性
//不可配置的属性 delete不掉

相关文章

  • JS的变量和函数提升

    1.js的运行和预编译过程 <1>.语法分析 查找基本语法有无错误; <2>、预解析/预编译 执行之前进行预解析;...

  • JavaScript 的“预 编译”

    JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行...

  • RePlugin 原理

    1. 预埋坑位 利用 gradle 插件,在编译的时候往 AndroidManifest.xml 预埋坑位laun...

  • C#【唐老狮】反射

    反射 反射概念和关键类TYpe 程序集经由编译器编译得到,进一步编译执行的中间产物dll文件扩展:C语言编译过程预...

  • 白话Angular词汇

    预 (ahead-of-time, AoT) 编译 在打包项目的时候提前编译好应用,打包好之后可以直接启动,而不是...

  • day05-JS运行和编译

    1.JS运行和编译 1.1语法分析:查找基本语法有没有错误 1.2 预解析:执行之前进行预解析 ...

  • 你需要知道的javascript的提升

    javascript在执行前会有一个预编译过程,预编译过程会先预声明变量再预定义函数,比如 预编译过后,类似于 运...

  • iOS 10 UICollectionView的新特性

    UICollectionViewCell的Pre-Fetching预加载 我们编译iOS 10的app的时候,这个...

  • 易智编译:常用的预印本平台有哪些?

    目前,预印本已经覆盖了大多数学科。易智编译给大家整理了一些常用的预印本平台,希望为读者投稿提供一些崭新的思路。 预...

  • 2020-12-22qemu加gdb跑linux kernel

    预安装依赖库有ncurses等等; 1. 编译linux kernel下载linux源码make O=xxx al...

网友评论

      本文标题:预编译

      本文链接:https://www.haomeiwen.com/subject/vvxykqtx.html