javascript - Apabila menggunakan kaedah objek, mengapa terdapat tambahan yang tidak terurai dalam hasil konsol?
習慣沉默
習慣沉默 2017-05-19 10:32:47
0
7
821

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

習慣沉默
習慣沉默

membalas semua(7)
漂亮男人

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 tetingkap
ini. p; / /window.p//Mula-mula mengisytiharkan tetingkap.p, tiada nilai diberikan, nilai tidak dikisthis.p; //window.p//首先声明一个window.p,未赋值,值是undifined

关键是多了一个undifined!
第二个undefined,前面有个箭头,
在 m 函数里加一个 return 'test',//"test"
所以,这个箭头可以看做return后面的值,这里m函数没有return,没有返回值就是undifined
总结:前面这个箭头,是控制台独有的,命令行调试时没有
控制台先是执行函数,然后是,输出函数的执行结果(比如再用来 给别的赋值)

Q2
第一个undefined,因为hello指向了一个对象,可以看做b,所以this.p; //b.p

Kuncinya ialah ada satu lagi yang belum dicampak! #🎜🎜#Yang kedua undefined mempunyai anak panah di hadapan, #🎜🎜#Tambahkan 'ujian' kembali dalam fungsi m, //"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# 🎜🎜#
小葫芦

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 tambahanundefined是js语句本身的值,剩下的就是this.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan