Rumah > Soal Jawab > teks badan
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
高洛峰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.
扔个三星炸死你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()
阿神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()
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