cari

Rumah  >  Soal Jawab  >  teks badan

fungsi javascript

function Foo(){
            getName = function(){
                console.log(1);
            };
           return this;
        }

        var getName = function (){ 
            console.log(4)
        };



          Foo().getName(); 

Mengapa kod di atas mengeluarkan 1;

Selepas foo() dijalankan, ini adalah output Ini adalah objek tetingkap Adakah getName dalam foo() menjadi ungkapan fungsi global Dan var getName berikut juga merupakan ungkapan fungsi;

foo, selepas pelaksanaan, adakah ia bersamaan dengan kod berikut?

getName = function(){
            console.log(1);
        };

        var getName = function (){ 
            console.log(4)
        };



          getName(); //4
给我你的怀抱给我你的怀抱2748 hari yang lalu786

membalas semua(6)saya akan balas

  • 高洛峰

    高洛峰2017-06-26 10:55:22

    Apabila Foo tidak dipanggil

    window.getName = function(){
        console.log(4);
    }
    

    Apabila memanggil Foo()

    getName = function(){
                    console.log(1);
                };
    // 相当于更改了 window.getName

    Selepas panggilan, return this dalam Foo memang menunjuk ke tetingkap, jadi keputusan akhir ialah 1.

    balas
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:55:22

    function Foo(){
        getName = function(){
            console.log(1);
        };
        return this;
    }
    //全局声明一个变量getName
    var getName = function (){ 
        console.log(4)
    };
    //重新赋值
    getName = function () {
        console.log(1)
    }
    //最终打印结果为1
    window.getName()

    balas
    0
  • 黄舟

    黄舟2017-06-26 10:55:22

    Foo().getName(); melaksanakan getName dalam Foo

    balas
    0
  • 阿神

    阿神2017-06-26 10:55:22

    function Foo(){
        getName = function(){
            console.log(1);
        };
        return this;
    }
    
    var getName = function (){ 
        console.log(4)
    };
    
    Foo().getName();
    function Foo(){
        getName = function(){
            console.log(1);
        };
        return this;
    }
    
    var getName = function (){ 
        console.log(4)
    };
    
    getName = function () {
        console.log(1)
    }
    
    window.getName()

    balas
    0
  • 代言

    代言2017-06-26 10:55:22

    Semak console.log(Foo()), adakah anda pasti ia adalah tetingkap?

    balas
    0
  • ringa_lee

    ringa_lee2017-06-26 10:55:22

    GetName dalam fungsi Foo tidak diisytiharkan dengan var, jadi ia adalah global, jadi apabila Foo dijalankan, fungsi getName di dalam fungsi akan menimpa fungsi yang ditakrifkan di luar

    balas
    0
  • Batalbalas