cari
Rumahhujung hadapan webSoal Jawab bahagian hadapanPenukaran jenis JavaScript (penjelasan terperinci dan contoh)

Artikel ini membawa anda pengetahuan tentang penukaran jenis dalam JavaScript Menukar nilai kepada nilai primitif, menukar kepada nombor dan menukar kepada rentetan sepadan dengan tiga operasi abstrak di dalam enjin: ToPrimitive() , ToNumber(), ToString() , saya harap ia akan membantu semua orang.

Penukaran jenis JavaScript (penjelasan terperinci dan contoh)

Peraturan penambahan JavaScript

Dalam JavaScript, peraturan penambahan sebenarnya sangat mudah, terdapat hanya dua Situasi:

  • Nombor dan nombor ditambah

  • Rentetan dan rentetan ditambah

Semua yang lain jenis nilai akan ditukar secara automatik kepada dua jenis nilai ini

Dalam JavaScript, terdapat dua jenis nilai:

  • Nilai asal ialah: tidak ditentukan, null, boolean, nombor, rentetan, simbol

  • nilai objek: semua nilai lain ialah nilai jenis objek, termasuk tatasusunan (tatasusunan) dan fungsi (tatasusunan)

Penukaran jenis

Pengendali penambahan akan mencetuskan tiga penukaran jenis: Tukar nilai kepada nilai primitif, nombor, dan rentetan, yang sepadan dengan tiga operasi abstrak di dalam enjin JavaScript: ToPrimitive(), ToNumber(), ToString()

Tukar nilai kepada nilai asal melalui ToPrimitive()

ToPrimitive(input, PreferredType?)

Parameter pilihan PreferredType boleh menjadi Number atau String, yang hanya mewakili pilihan penukaran dan hasil penukaran tidak semestinya Ia mestilah jenis yang ditunjukkan oleh parameter ini, tetapi hasil penukaran mestilah nilai primitif Jika PreferredType ditandakan sebagai Nombor, operasi berikut akan dilakukan untuk menukar nilai input (§9.1):

  • Jika nilai input sudah menjadi nilai primitif, kembalikan terus

  • Jika tidak, jika nilai input ialah objek, panggil kaedah valueOf() bagi objek tersebut. ) kaedah ialah nilai primitif, kemudian kembalikan nilai primitif ini nilai, kemudian kembalikan nilai primitif. daripada langkah kedua dan ketiga operasi akan diterbalikkan Jika tiada parameter PreferredType, nilai PreferredType akan ditetapkan secara automatik mengikut peraturan berikut: Objek jenis tarikh akan ditetapkan kepada String, dan jenis nilai lain. akan ditetapkan. Tukar nilai kepada Nombor melalui ToNumber() untuk Nombor.

  • Jika nilai yang dimasukkan ialah Objek akan terlebih dahulu memanggil ToPrimitive(obj, Number) untuk menukar objek menjadi a nilai primitif, dan kemudian panggil ToNumber() untuk menukar nilai primitif kepada nombor

  • Melalui ToString () Tukar nilai kepada rentetan

<.>

Jika nilai input ialah objek, ToPrimitive(obj, String) akan terlebih dahulu dipanggil untuk menukar nilai Objek ditukar kepada nilai primitif, dan kemudian ToString() dipanggil ke tukar nilai primitif kepada rentetan.demo

Penukaran jenis JavaScript (penjelasan terperinci dan contoh)

Nombor Apabila dipanggil sebagai fungsi (bukan sebagai pembina), operasi ToNumber() dipanggil secara dalaman dalam enjin:

Tambahan

Penukaran jenis JavaScript (penjelasan terperinci dan contoh)

Apabila mengira ungkapan ini, langkah-langkah adalah seperti berikut:

Tukar dua operan kepada nilai primitif (berikut ialah tatatanda matematik, bukan kod JavaScript ):

var obj = {
    valueOf: function () {
        console.log("valueOf");
        return {}; // 没有返回原始值
    },
    toString: function () {
        console.log("toString");
        return {}; // 没有返回原始值
    }
}
PreferredType diabaikan, jadi nilai jenis Tarikh menggunakan String, dan nilai jenis lain menggunakan Nombor.

Number(obj)
// output
valueOf
toString
Uncaught TypeError: Cannot convert object to primitive value
String(obj)
// output
toString
valueOf
Uncaught TypeError: Cannot convert object to primitive value

Jika prim1 Atau jika mana-mana satu daripada prim2 ialah rentetan, tukar yang satu lagi menjadi rentetan, dan kemudian kembalikan hasil daripada dua operasi penggabungan rentetan; Jika tidak, tukar prim1 dan prim2 Kedua-duanya ditukar kepada jenis angka dan jumlahnya dikembalikan.

    value1 + value2

  • [] []

Output: ''
    prim1 := ToPrimitive(value1)
    prim2 := ToPrimitive(value2)

[] akan ditukar kepada Untuk nilai primitif, mula-mula cuba kaedah valueOf() dan kembalikan tatasusunan itu sendiri (ini):

  • Keputusan sedemikian bukan nilai primitif, jadi panggil kaedah toString() sekali lagi dan kembalikan rentetan kosong (adalah nilai asal). Oleh itu, hasil [] [] sebenarnya ialah gabungan dua rentetan kosong

  • {} {}

Output. : NaNEnjin JavaScript mentafsir {} pertama sebagai blok kod kosong dan mengabaikan penambahan

di sini Tandanya bukan operator binari yang mewakili penambahan, tetapi operator unari, yang menukarkan operan yang mengikutinya kepada nombor, betul-betul sama dengan fungsi Number(). Contohnya:

+{}
Number({})
Number({}.toString())  // 因为{}.valueOf()不是原始值
Number("[object Object]")
NaN
> {} + []
0
  • {} 忽略

  • +[] = Number([]) = Number([].toString()) = Number("") = 0

有趣的是,Node.js的REPL在解析类似的输入时,与Firefox和Chrome(和Node.js一样使用V8引擎)的解析结果不同.下面的输入会被解析成一个表达式,结果更符合我们的预料:

> {} + {}
&#39;[object Object][object Object]&#39;
> {} + []
&#39;[object Object]&#39;

总结

对象.valueOf() === 对象

数组对象.toString() === 数组对象.join()

对象.toString() === "[object Object]"

Javacript 中 + 号工作:

  • 数字 + 数字

  • 字符串 + 字符串

【相关推荐:javascript学习教程

Atas ialah kandungan terperinci Penukaran jenis JavaScript (penjelasan terperinci dan contoh). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:掘金. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
HTML dan React: Hubungan antara markup dan komponenHTML dan React: Hubungan antara markup dan komponenApr 12, 2025 am 12:03 AM

Hubungan antara HTML dan React adalah teras pembangunan front-end, dan mereka bersama-sama membina antara muka pengguna aplikasi web moden. 1) HTML mentakrifkan struktur kandungan dan semantik, dan React membina antara muka dinamik melalui komponenisasi. 2) Komponen React Gunakan sintaks JSX untuk membenamkan HTML untuk mencapai rendering pintar. 3) Kitaran Hayat Komponen Menguruskan Rendering HTML dan Kemas kini secara dinamik mengikut keadaan dan atribut. 4) Gunakan komponen untuk mengoptimumkan struktur HTML dan meningkatkan keupayaan. 5) Pengoptimuman prestasi termasuk mengelakkan penyampaian yang tidak perlu, menggunakan atribut utama, dan menjaga tanggungjawab tunggal komponen.

React and the Frontend: Membina Pengalaman InteraktifReact and the Frontend: Membina Pengalaman InteraktifApr 11, 2025 am 12:02 AM

React adalah alat pilihan untuk membina pengalaman front-end interaktif. 1) React memudahkan pembangunan UI melalui komponen dan DOM maya. 2) Komponen dibahagikan kepada komponen fungsi dan komponen kelas. Komponen fungsi adalah lebih mudah dan komponen kelas menyediakan lebih banyak kaedah kitaran hayat. 3) Prinsip kerja React bergantung kepada algoritma DOM dan perdamaian maya untuk meningkatkan prestasi. 4) Pengurusan negeri menggunakan useState atau ini. Kaedah kitaran hayat seperti ComponentDidMount digunakan untuk logik tertentu. 5) Penggunaan asas termasuk membuat komponen dan pengurusan negeri, dan penggunaan lanjutan melibatkan cangkuk tersuai dan pengoptimuman prestasi. 6) Kesalahan biasa termasuk kemas kini status yang tidak betul dan isu prestasi, kemahiran debugging termasuk menggunakan reactdevtools dan sangat baik

React and the Frontend Stack: Alat dan TeknologiReact and the Frontend Stack: Alat dan TeknologiApr 10, 2025 am 09:34 AM

React adalah perpustakaan JavaScript untuk membina antara muka pengguna, dengan komponen terasnya dan pengurusan negeri. 1) Memudahkan pembangunan UI melalui komponen dan pengurusan negeri. 2) Prinsip kerja termasuk perdamaian dan rendering, dan pengoptimuman dapat dilaksanakan melalui React.Memo dan Usememo. 3) Penggunaan asas adalah untuk membuat dan membuat komponen, dan penggunaan lanjutan termasuk menggunakan cangkuk dan konteksapi. 4) Kesalahan biasa seperti kemas kini status yang tidak betul, anda boleh menggunakan ReactDevTools untuk debug. 5) Pengoptimuman prestasi termasuk menggunakan react.memo, senarai virtualisasi dan codesplitting, dan menyimpan kod yang boleh dibaca dan dikekalkan adalah amalan terbaik.

Peranan React dalam HTML: Meningkatkan Pengalaman PenggunaPeranan React dalam HTML: Meningkatkan Pengalaman PenggunaApr 09, 2025 am 12:11 AM

React menggabungkan JSX dan HTML untuk meningkatkan pengalaman pengguna. 1) JSX membenamkan HTML untuk menjadikan pembangunan lebih intuitif. 2) Mekanisme DOM maya mengoptimumkan prestasi dan mengurangkan operasi DOM. 3) UI pengurusan berasaskan komponen untuk meningkatkan kebolehkerjaan. 4) Pengurusan negeri dan pemprosesan acara meningkatkan interaktiviti.

Komponen React: Membuat unsur -unsur yang boleh diguna semula di HTMLKomponen React: Membuat unsur -unsur yang boleh diguna semula di HTMLApr 08, 2025 pm 05:53 PM

Komponen React boleh ditakrifkan oleh fungsi atau kelas, merangkumi logik UI dan menerima data input melalui prop. 1) Tentukan komponen: Gunakan fungsi atau kelas untuk mengembalikan elemen bertindak balas. 2) Rendering Component: React Call Render Kaedah atau Melaksanakan Komponen Fungsi. 3) Komponen multiplexing: Lulus data melalui prop untuk membina UI yang kompleks. Pendekatan kitaran hayat komponen membolehkan logik dilaksanakan pada peringkat yang berbeza, meningkatkan kecekapan pembangunan dan pemeliharaan kod.

Tujuan mod yang ketatTujuan mod yang ketatApr 02, 2025 pm 05:51 PM

React Mode Strict adalah alat pembangunan yang menyoroti isu -isu yang berpotensi dalam aplikasi React dengan mengaktifkan cek tambahan dan amaran. Ia membantu mengenal pasti kod warisan, hayat yang tidak selamat, dan kesan sampingan, menggalakkan amalan reaksi moden.

Reaksi penggunaan serpihanReaksi penggunaan serpihanApr 02, 2025 pm 05:50 PM

Serpihan bertindak balas membolehkan kumpulan kanak -kanak tanpa nod dom tambahan, meningkatkan struktur, prestasi, dan kebolehaksesan. Mereka menyokong kekunci untuk rendering senarai yang cekap.

Proses Perdamaian ReactProses Perdamaian ReactApr 02, 2025 pm 05:49 PM

Artikel ini membincangkan proses perdamaian React, memperincikan bagaimana ia mengemas kini DOM dengan cekap. Langkah -langkah utama termasuk mencetuskan perdamaian, mewujudkan DOM maya, menggunakan algoritma yang berbeza, dan memohon kemas kini DOM yang minimum. Ia juga meliputi perfo

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.