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
Apabila Foo tidak dipanggil
Apabila memanggil Foo()
Selepas panggilan,
return this
dalam Foo memang menunjuk ke tetingkap, jadi keputusan akhir ialah 1.Foo().getName(); melaksanakan getName dalam Foo
Semak console.log(Foo()), adakah anda pasti ia adalah tetingkap?
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