Rumah hujung hadapan web Soal Jawab bahagian hadapan Penukaran jenis JavaScript (penjelasan terperinci dan contoh)

Penukaran jenis JavaScript (penjelasan terperinci dan contoh)

Jan 12, 2022 pm 06:05 PM
html javascript hujung hadapan

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?)
Salin selepas log masuk

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 {}; // 没有返回原始值
    }
}
Salin selepas log masuk
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
Salin selepas log masuk

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
Salin selepas log masuk

  • [] []

Output: ''
    prim1 := ToPrimitive(value1)
    prim2 := ToPrimitive(value2)
Salin selepas log masuk

[] 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
Salin selepas log masuk
> {} + []
0
Salin selepas log masuk
  • {} 忽略

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

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

> {} + {}
&#39;[object Object][object Object]&#39;
> {} + []
&#39;[object Object]&#39;
Salin selepas log masuk

总结

对象.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 Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1677
14
Tutorial PHP
1280
29
Tutorial C#
1257
24
Sempadan Jadual dalam HTML Sempadan Jadual dalam HTML Sep 04, 2024 pm 04:49 PM

Panduan untuk Sempadan Jadual dalam HTML. Di sini kita membincangkan pelbagai cara untuk menentukan sempadan jadual dengan contoh Sempadan Jadual dalam HTML.

Jadual Bersarang dalam HTML Jadual Bersarang dalam HTML Sep 04, 2024 pm 04:49 PM

Ini ialah panduan untuk Nested Table dalam HTML. Di sini kita membincangkan cara membuat jadual dalam jadual bersama-sama dengan contoh masing-masing.

HTML jidar-kiri HTML jidar-kiri Sep 04, 2024 pm 04:48 PM

Panduan untuk HTML margin-kiri. Di sini kita membincangkan gambaran keseluruhan ringkas tentang HTML margin-left dan Contoh-contohnya bersama-sama dengan Pelaksanaan Kodnya.

Susun Atur Jadual HTML Susun Atur Jadual HTML Sep 04, 2024 pm 04:54 PM

Panduan untuk Susun Atur Jadual HTML. Di sini kita membincangkan Nilai Susun Atur Jadual HTML bersama-sama dengan contoh dan output n perincian.

Pemegang Tempat Input HTML Pemegang Tempat Input HTML Sep 04, 2024 pm 04:54 PM

Panduan untuk Pemegang Tempat Input HTML. Di sini kita membincangkan Contoh Pemegang Tempat Input HTML bersama-sama dengan kod dan output.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Senarai Tertib HTML Senarai Tertib HTML Sep 04, 2024 pm 04:43 PM

Panduan kepada Senarai Tertib HTML. Di sini kami juga membincangkan pengenalan senarai dan jenis Tertib HTML bersama-sama dengan contoh mereka masing-masing

Butang onclick HTML Butang onclick HTML Sep 04, 2024 pm 04:49 PM

Panduan untuk Butang onclick HTML. Di sini kita membincangkan pengenalan, kerja, contoh dan onclick Event masing-masing dalam pelbagai acara.

See all articles