美文网首页
预编译(题目)

预编译(题目)

作者: 程序员是粉色的 | 来源:发表于2020-07-24 17:04 被阅读0次

1.函数声明整体提升
2.变量 声明提升
3.一切声明的全局变量,全是window的属性

预编译过程:
1.创建AO对象
2.找形参和变量声明,将变量和形参作为AO属性名,值为undefined
3.将实参值和形参值统一
4.在函数体里面找函数声明,值赋予函数体

1

function fn(a){
    console.log(a);//function a(){}
    var a=123;
    console.log(a);//123
    function a(){}
    console.log(a)//123
    var b = function(){}
    console.log(b);//function(){}
    function d(){}
}
fn(1)

2

function test(a,b){
    console.log(a); //1
    c=0;
    var c;
    a=3;
    b=2;
    console.log(b)//2
    function b(){}
    function d(){}
    console.log(b)//2
    
}
    
test(1)

3

function test(a,b){
    console.log(a);//ƒ a(){}
    console.log(b);//undefined
    var b=234;
    console.log(b);//234
    a=123;
    console.log(a);//123
    function a(){}
    var a;
    b=234;
    var b=function(){}
    console.log(a);//123
    console.log(b);//ƒ (){}
}

test(1)

4

console.log(test) //function test(test){
function test(test){
    console.log(test) //function test(){}
    var test = 234;
    console.log(test)//234
    function test(){}
}
test(1);
var test = 123

5

var global = 100;

function fn(){
    console.log(global) //100
}
fn()

globel = 100;
function fn(){
    console.log(globel)//undefiend
    globel = 200;
    console.log(globel)//200
    var globel = 300;
}
fn();
var global;

6

function test(){
    console.log(b)//undefiend
    if(a){
        var b=100;
    }
    console.log(b)//undefiend
    c=234;
    console.log(c)//234
}

var a;
test();
a=10;
console.log(c)//234

7

function bar(){
    return foo;
    foo = 10;
    function foo(){}
    var foo = 11;
}
            
console.log(bar())      //function foo(){}  

8

  var b = "boy";
   console.log(b); // boy
   function fighting(){
    
    console.log(a); //undefiend
    console.log(c);  //undefiend
    if(a === "apple"){
     a = "Alice"
    }else{
     a = "Ada"
    }
    console.log(a)  //Ada
    var a = "Andy"; 
    middle();
    function middle(){
     console.log(c++); //NaN
     var c = 100;
     console.log(++c); //101
     small();
     function small(){
      console.log(a)  //Andy
     }
    }
    var c = a = 88;
    function bottom(){
     
     console.log(this.b); //boy
     b = "baby";
     console.log(b) //baby
    }
    bottom();
    
   }
   fighting();
   console.log(b)//baby

相关文章

  • 预编译(题目)

    1.函数声明整体提升2.变量 声明提升3.一切声明的全局变量,全是window的属性 预编译过程:1.创建AO对象...

  • 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的时候,这个...

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

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

网友评论

      本文标题:预编译(题目)

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