Rumah > Soal Jawab > teks badan
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
漂亮男人2017-05-19 10:34:47
Jawab secara automatik, meringkaskan bantuan sebelumnya:
Q1
Yang pertama tidak ditentukan, kerana hello menunjuk kepada kaedah, yang boleh dianggap sebagai nama fungsi, jadi ini ialah tetingkapthis.p; //window.p
//首先声明一个window.p,未赋值,值是undifined
关键是多了一个undifined!
第二个undefined,前面有个箭头,
在 m 函数里加一个 return 'test',//"test"
所以,这个箭头可以看做return后面的值,这里m函数没有return,没有返回值就是undifined
总结:前面这个箭头,是控制台独有的,命令行调试时没有
控制台先是执行函数,然后是,输出函数的执行结果(比如再用来 给别的赋值)
Q2
第一个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, jadi this.p; //b.p
# 🎜🎜#高洛峰2017-05-19 10:34:47
ialah nilai pulangan penyata terakhir Bolehkah anda cuba menambah "ujian" pulangan pada fungsi m?
黄舟2017-05-19 10:34:47
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.
迷茫2017-05-19 10:34:47
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.
为情所困2017-05-19 10:34:47
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
黄舟2017-05-19 10:34:47
1.hello() tidak mempunyai nilai pulangan
2.console.log() fungsi ini tidak mempunyai nilai pulangan