javascript - Adakah objek ditakrifkan tanpa menggunakan var dalam fungsi js objek tempatan?
typecho
typecho 2017-06-14 10:53:31
0
4
932

Objek yang tidak ditakrifkan menggunakan var dalam fungsi haruslah objek global
Pada halaman P71 Buku Merah Kecil, apabila dikatakan bahawa obj ditulis semula secara dalaman dalam fungsi, rujukan objek ini menjadi objek tempatan tak faham~~

typecho
typecho

Following the voice in heart.

membalas semua(4)
洪涛

Saya mengeluarkan buku merah kecil saya secara khas Bahagian ini bercakap tentang menghantar parameter mengikut nilai, kemudian objek dihantar mengikut nilai, dan apa yang diluluskan ialah penunjuk ke lokasi objek. Jadi, pada langkah pertama, mudah difahami jika terdapat atribut 'nama' bagi 'chen'.
Oleh kerana obj ialah parameter fungsi, maksud sebenar adalah dalam fungsi Apabila var了一个obj,后期,函数执行完,就会被销毁。可能你看了后面的执行环境和作用域好理解一点。然后,obj = new Object() , nilai obj bukan penunjuk objek orang asal.
Sudah tentu, jika anda menggantikan baris kedua kod dengan 'obj1', anda akan mendapat kesan daripada pengisytiharan global yang anda nyatakan. (Jawab soalan dengan sangat serius)

学霸

Apa yang anda tulis dalam fungsi yang anda takrifkan seperti ini hanyalah parameter formal, bukan parameter sebenar, apatah lagi parameter global dan setempat. . . . . . . . . . . . . .

女神的闺蜜爱上我

obj ialah parameter

淡淡烟草味

Setelah membaca jawapan rujukan yang diberikan oleh netizen, saya berfikir sejenak, dan secara kasarnya saya tidak tahu sama ada ia betul atau tidak, tetapi saya rasa saya agak rapat!
Parameter semua fungsi dalam ECMAScript dihantar mengikut nilai
Jadi apabila objek orang dihantar ke setName() sebagai parameter sebenar, penunjuk objek orang disalin ke setName()
Anggap bahawa penunjuk asal kepada orang itu objek adalah nombor satu , penunjuk selepas menyalin adalah nombor dua
Dua penunjuk ini menunjuk kepada objek orang pada masa yang sama
Jadi apabila obj.name="chen" dilaksanakan dalam fungsi, atribut nama akan ditambahkan pada objek orang mengikut penunjuk nombor dua
Tetapi apabila melaksanakan When obj=new Object();, penunjuk kedua akan menunjuk ke objek baharu dan bukannya objek orang asal
Jadi apabila obj.name="long"; atribut nama objek orang tidak akan ditukar
console .log(person.name); akan mengembalikan "chen"
dan obj ialah parameter formal, bukan parameter sebenar dimusnahkan selepas fungsi itu dilaksanakan, iaitu, tiada lagi penunjuk nombor dua. Tiada penunjuk kepada atribut nama "panjang".

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