2018-06-26 js 预编译

2018-06-26  本文已影响0人  Mo_ham_med
函数 声明   

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 这个 函数。
上一篇 下一篇

猜你喜欢

热点阅读