美文网首页
2018-06-26 js 预编译

2018-06-26 js 预编译

作者: Mo_ham_med | 来源:发表于2018-06-26 23:24 被阅读0次
函数 声明   

function ledi(){}   //  函数声明



变量赋值


var ledi = function (){}    //  变量赋值

第一种:
    function ledi (){
    
        alert('ledi1')
        
    }
    ledi()


    function ledi (){

        alert('ledi2')      

    }   

    ledi()
首先 这两个都是 属于 函数声明 ,  都会在  预编译 阶段 处理, 而 函数名 相同,

会 按  后定义的 来 定义函数, 在执行阶段 只会 看到 后 定义 的 函数 结果,也就 不难理解了。

自己理解:

声明 函数  就是   函数名 相同 ,  就像是  声明变量 一样,后面的 会 替换 前面的 变量,

在 执行 阶段   只会 看到 后面函数  的 结果。


第二种:
    var ledi  = function (){alert('ledi1')};
    
    ledi()

    ledi = function (){alert('ledi2')}  

    ledi()

这段 代码,  首先,判断 两种 都 属于  变量赋值。 两个代码名一样,  分配  一个 内存空间,存放变量 ledi 内容。

当 代码执行时,  按照 顺序 执行 和 赋值, 会 先后得到两种结果。

自己理解就是:

先 声明了一个变量赋值 给函数, 执行 这个 赋值函数 ,执行完之后,又给变量 ledi 赋值了一个函数,又执行了 一次。

所以  执行了 两次。



第三种:
    function ledi(){alert('ledi1')}
    ledi()
    
    ledi = function (){alert('ledi2')}

    ledi()

首先判断,前一种, 属于  函数声明, 后一种,属于 变量赋值,

首先 执行 函数声明 的 这块函数, 

然后,将 ledi 变量 重新赋值 即 初始化,重新赋值后,执行  变量赋值的函数。


第四种:


    window.alert(ledi);
    
    function ledi (){}

    // 这 四行 代码分开执行

    window.alert(ledi);

    var ledi = 123;

    

js 预编译  先把函数 放在了最上面 , 所以 两次 弹窗 都是 ledi 这个 函数。

相关文章

  • JS的变量和函数提升

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

  • day05-JS运行和编译

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

  • 2018-06-26 js 预编译

  • 2018-07-06

    js高级 今日所学摘要: ①js的预编译:js很特别,在js代码执行前会进行预编译,预编译的结果就是——变量提升。...

  • JS预解析

    JS解释器运行JS分为两步:预解析、代码执行 预解析 JS解释器会把JS里面所有的var和function提升到当...

  • 2018-07-27

    JS实现图片预加载

  • 前端的那些事(一):变量提升与函数提升

    前言 是不是经常遇到面试问你,为什么会变量提升,函数提升,它的行为又是什么? 解答 js程序编译有两个步骤: 预解...

  • js 编译顺序

    一、js 编译1. js 是按照代码块进行编译和执行,代码块之间相互独立。

  • Scope & Closures

    JS 也是编译型语言,并不是边解释边执行的。 编译的时机是代码即将执行之前。 Hoisting 编译时 JS 会把...

  • js编译、解析Urlencode

    js编译、解析Urlencode

网友评论

      本文标题:2018-06-26 js 预编译

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