S1 Mengapakah konsol keluaran dua tidak dijemur pada penghujungnya?
var a = {
b: {
m: function() {
console.log(this.p);
},
p: 'Hello'
}
};
var hello = a.b.m;
hello()
Q2 rasa macam ada satu lagi yang tak tercabar di sini
//代码
var a = {
b: {
m: function() {
console.log(this.p);
},
p: 'Hello'
}
};
var hello = a.b;
hello.m();
Tambahan:
Sumber masalah:
Kata kunci ini dalam standard JS Ruan Yifeng
Kod di atas ada dalam pautan, 2. (3) Kaedah objek, perenggan terakhir
Jawab secara automatik, meringkaskan bantuan sebelumnya:
Q1
ini. p; / /window.p//Mula-mula mengisytiharkan tetingkap.p, tiada nilai diberikan, nilai tidak dikis
Yang pertama tidak ditentukan, kerana hello menunjuk kepada kaedah, yang boleh dianggap sebagai nama fungsi, jadi ini ialah tetingkap
this.p; //window.p
//首先声明一个window.p,未赋值,值是undifined关键是多了一个undifined!
第二个undefined,前面有个箭头,
在 m 函数里加一个 return 'test',
//"test"
所以,这个箭头可以看做return后面的值,这里m函数没有return,没有返回值就是undifined
总结:前面这个箭头,是控制台独有的,命令行调试时没有
控制台先是执行函数,然后是,输出函数的执行结果(比如再用来 给别的赋值)
Q2
Kuncinya ialah ada satu lagi yang belum dicampak! #🎜🎜#Yang kedua undefined mempunyai anak panah di hadapan, #🎜🎜#Tambahkan 'ujian' kembali dalam fungsi m,第一个undefined,因为hello指向了一个对象,可以看做b,所以
this.p; //b.p
//"test"
#🎜🎜#Jadi, anak panah ini boleh dilihat Lakukan nilai selepas kembali. di hadapan adalah unik untuk konsol dan baris arahan Apabila menyahpepijat, tiada #🎜🎜#Konsol mula-mula melaksanakan fungsi, dan kemudian mengeluarkan hasil pelaksanaan fungsi (contohnya, ia boleh digunakan untuk menetapkan nilai kepada perkara lain)#🎜🎜# #🎜🎜##🎜🎜#Q2#🎜🎜##🎜🎜#Yang pertama tidak ditentukan, kerana helo menunjuk ke objek dan boleh dianggap sebagai b, jadithis.p; //b.p
# 🎜🎜#ialah nilai pulangan penyata terakhir Bolehkah anda cuba menambah "ujian" pulangan pada fungsi m?
Secara peribadi, saya rasa yang pertama undefined adalah kerana fungsi tersebut tidak mempunyai nilai pulangan, dan yang kedua undefined mungkin disebabkan oleh penyahpepijatan penyemak imbas Bolehkah anda cuba menggunakan baris arahan untuk nyahpepijat dan lihat jika undefined kedua akan muncul.
Adakah anda menggunakan konsol penyemak imbas Chrome? Undefined kedua adalah wujud dan tiada kaitan dengan kod anda.
Masukkan var a = 1;
Terdapat juga undefined apabila menekan Enter.
Saya fikir ia adalah anda Penunjuk kaedah ini telah menukar definisi kaedah dalam objek kepada pembolehubah di bawah tetingkap Pada masa ini, ini menunjuk ke tetingkap, dan tidak ada definisi p di bawah tetingkap isytiharkan satu sebelum var hello var P Saya faham
1.hello() tidak mempunyai nilai pulangan
2.console.log() fungsi ini tidak mempunyai nilai pulangan
Soalan tambahan
undefined
是js语句本身的值,剩下的就是this
.