Mengapa anda perlu menambah kurungan apabila menambah kaedah prototaip ke Nombor dalam Javascript?
给我你的怀抱
给我你的怀抱 2017-05-19 10:18:07
0
2
606

Panggil terus kaedah pada prototaip Nombor, seperti berikut:

10.toString();

akan melaporkan ralat:Uncaught SyntaxError: Invalid or unexpected token

Namun, tiada ralat jika anda memanggil nombor floating point secara terus

10.1.toString();//"10.1"

Saya melihat penjelasan ini:
Kaedah panggilan literal nombor secara langsung Selagi enjin JavaScript tidak mengelirukan titik perpuluhan dengan pengendali titik objek, pelbagai kaedah penulisan boleh digunakan untuk memahami titik pertama sebagai titik perpuluhan (iaitu 10.0), fahami titik kedua sebagai memanggil sifat objek, untuk mendapatkan hasil yang betul.

Sebagai contoh, kaedah panggilan berikut adalah betul

(10).toString(2)
10..toString(2) // "1010"
10 .toString(2) // "1010"
10.0.toString(2) // "1010"
10['toString'](2) // "1010"

Tetapi saya tidak faham cara ia berfungsi.
Pada mulanya saya rasa ia adalah kerana keutamaan kurungan atau pengendali titik Adakah saya menukar 10 kepada nombor dahulu?
Tetapi saya rasa ini tidak boleh dijelaskan.

Sila beritahu saya mengapa ralat berlaku apabila memanggil kaedah prototaip terus pada integer, tetapi bukan pada nombor titik terapung?
Mengapa kaedah prototaip integer boleh dipanggil melalui kaedah yang disenaraikan di atas?

给我你的怀抱
给我你的怀抱

membalas semua(2)
世界只因有你

Saya melihat penjelasan ini: Literal angka terus memanggil kaedah Selagi enjin JavaScript tidak mengelirukan titik perpuluhan dengan pengendali titik objek, pelbagai kaedah penulisan boleh digunakan untuk memahami titik pertama sebagai titik perpuluhan (iaitu 10.0), fahami titik kedua sebagai memanggil sifat objek, untuk mendapatkan hasil yang betul.

Pendapat saya: Selagi maksud titik itu tidak jelas, penyusun boleh memahaminya dengan betul.

(10).toString(2) // "1010"

Jelas sekali, kurungan ditambah dan berikut. ialah operator titik.点运算符

10..toString(2) // "1010"

不存在带两个小数点的数字,因此这里也是指 点运算符

所以这个 10..toString(2) 其实可以归结为下面一个

10.0.toString(2) // "1010"

浮点数后面的点一定不再是指小数点了,而是指 点运算符

10..toString(2) // "1010"

Tiada nombor dengan dua titik perpuluhan, jadi ini juga merujuk kepada pengendali titik

Jadi 10..toString(2) ini sebenarnya boleh dipecahkan kepada yang berikut

10.0.toString(2) // "1010"

Titik selepas nombor titik terapung mestilah tidak lagi merujuk kepada titik perpuluhan, tetapi kepada operator titik

🎜10['toString'](2) // "1010"🎜 🎜obj[key] Dengan cara ini anda boleh mencari atribut bernama kunci dalam obj. 🎜 🎜🎜🎜🎜🎜 🎜10.toString() Sebab ralat🎜 🎜Sebabnya ialah pengkompil akan mempunyai dua tafsiran apabila melihat ini: 🎜
1. (10.0).toString(); 
2.  10   .toString(); 
phpcn_u1582

Prinsip kompilasi, apabila enjin mula menghuraikan nombor, . adalah sah, jadi ia akan diberi keutamaan sebagai titik perpuluhan. Penyelesaian di atas semuanya memberitahu penghurai "selesai membaca nombor" dan mula membaca token seterusnya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!