Artikel ini membawakan anda pengetahuan yang berkaitan tentang javascript, yang terutamanya memperkenalkan isu yang berkaitan dengan penukaran kotak dan jenis Tinju merujuk kepada menukar jenis data asas kepada yang sepadan Mari kita lihat operasi jenis rujukan I semoga ianya bermanfaat kepada semua.
Pengesyoran berkaitan: Tutorial javascript
Jenis data asas: string
, number
, boolean
Jenis rujukan: object
, function
Jenis tidak wujud: undefined
String
,Number
,Boolean
Ia adalah jenis pembungkus yang dimiliki oleh tiga jenis primitif: masing-masingstring
,number
danboolean
dan objeknya ialah jenis rujukan.
Tinju
Tinju merujuk kepada operasi menukar jenis data asas kepada jenis rujukan yang sepadan Proses ini terutamanya merujuk kepada string
, number
, boolean
Jenis data ialah. dibungkus ke dalam data jenis rujukan melalui String
, Number
dan Boolean
.
// 隐式装箱var s1 = 'Hello World'; var s2 = s1.substring(2);
Langkah pelaksanaan baris kedua kod di atas sebenarnya adalah seperti berikut:
- Gunakan
new String('Hello World')
untuk mencipta objek contoh sementara; - Gunakan objek sementara untuk memanggil kaedah
substring
; - tetapkan hasil pelaksanaan kepada
s2
;
Langkah di atas ditukarkan kepada kod, seperti berikut:
// 显式装箱var s1 = 'Hello World'; var tempObj = new String('Hello World'); var s2 = tempObj.substring(2);
Nyah kotak
Nyah kotak adalah untuk menukar jenis rujukan kepada jenis data asas.
Mengenai ToPrimitive
penukaran jenis semasa proses nyahbox
operator mempunyai jenis yang dijangkakan untuk pembolehubah di kedua-dua hujung Dalam javascript
, sebarang operasi yang tidak memenuhi Pembolehubah yang memenuhi jenis yang dijangkakan akan ditukar secara tersirat.
Pengendali logik
Apabila menjalankan operasi logik, hanya terdapat satu standard untuk penukaran tersirat: Hanya null
, undefined
, ''
, NaN
, 0
dan false
mewakili false
, dan kes lain ialah true
, seperti {}
, []
.
Operator aritmetik
Jika kedua-dua hujung operator aritmetik ialah data jenis
number
, pengiraan dilakukan secara terusJika terdapat bukan-
number
jenis data asas pada kedua-dua hujung operator aritmetik, gunakannumber
untuk kotak operan bukanNumber()
, dan kemudian nyahkotak nilai pulangan ke dalam jenisnumber
, mengambil bahagian dalam pengiraan;Jika terdapat jenis data rujukan pada kedua-dua hujung operator aritmetik, jenis rujukan akan dinyahkotak terlebih dahulu Jika hasilnya bukan jenis
number
, maka jenis rujukan akan dinyahkotak mengikut条件2
Laksanakan, jika tidak laksanakan条件1
.
1 - true // 0, 首先 Number(true) 转换为数字 1, 然后执行 1 - 11 - null // 1, 首先把 Number(null) 转换为数字 0, 然后执行 1 - 01 * undefined // NaN, Number(undefined) 转换为数字是 NaN , 然后执行 1 * NaN2 * ['5'] // 10, ['5'] 依照ToPrimitive规则进行拆箱会变成 '5', 然后通过 Number('5') 进行拆装箱再变成数字 5123 + {valueOf:()=>{return 10}} // 133 {valueOf:()=>{return 10}} 依照ToPrimitive规则会先调用valueOf,获得结果为10
Apabila
muncul di hadapan pembolehubah sebagai pengendali unari, ini bermakna menukar pembolehubah kepada jenis Number
+"10" // 10 同 Number("10")+['5'] // 5 ['5']依照ToPrimitive规则会变成 '5', 然后通过`Number`的拆箱操作再变成数字 5
Penyambung rentetan
Simbol penyambung rentetan adalah sama dengan pengendali aritmetik
.
- Jika kedua-dua hujung operator aritmetik adalah data jenis
string
, sambung terus - Jika terdapat bukan-
string
jenis asas pada kedua-dua hujung operator, maka connect Data jenis asas selainstring
dikotak-kotak menggunakanString()
, dan kemudian nilai pulangan dinyahkotak menjadi jenis asas untuk mengambil bahagian dalam penyambungan rentetan. - Apabila terdapat jenis data rujukan di kedua-dua hujung
string
, kemudian laksanakan mengikut条件2
, jika tidak laksanakan.条件1
.
Pengendali hubungan
NaN
dan mana-mana jenis lain akan sentiasa kembalifalse
(termasuk dirinya sendiri) apabila melakukan sebarang operasi hubungan. Jika anda ingin menilai sama ada pembolehubah ialahNaN
, anda boleh menggunakanNumber.isNaN()
untuk menilai. Hasil perbandingan-
null == undefined
ialahtrue
Selain itu, nilai perbandingannull
,undefined
dan sebarang hasil lain (tidak termasuk diri mereka sendiri) ialahfalse
. .ditakrifkan oleh peraturan di sini
null
adalah jenis objek, tetapi akan terdapat ralat sintaks apabila memanggilvalueOf
atautoString
. -
Keadaan umum:
- 如果算术运算符两端均为
number
类型的数据,直接进行计算; - 如果算术运算符两端存在非
number
的基本数据类型,则对非number
的运算数使用Number()
进行装箱,然后对返回值进行拆箱为number
类型,参与计算; - 算术运算符两端存在引用数据类型,则先对引用类型进行拆箱操作,如果结果为非
number
类型,则根据条件2
执行,否则执行条件1
。
- 如果算术运算符两端均为
{} == !{} // false Number({}.valueOf().toString())==> NaN , 所以题目等同于 NaN == false , NaN 和 任何类型比较都是 false[] == [] // false 内存地址不同![] == 0 // true ![]==>false , 所以题目等同于 false==0 , Number(false)==>0 , 所以结果为 true
一些题目
-
[] == ![]
- 第一步,![] 会变成 false - 第二步,[]的valueOf是[],[]是引用类型,继续调用toString,题目变成: "" == false - 第三步,符号两端转换为Number, 得到 0==0 - 所以, 答案是 true
-
[undefined] == false
- 第一步,[undefined]的valueOf结果为 [undefined],然后[undefined]通过toString变成 '' ,所以题目变成 '' == false - 第二步,符号两端转换为Number, 得到 0==0 - 所以, 答案是 true !
-
如何使
a==1 && a==2 && a==3
的结果为true
var a = { value: 0, valueOf: function() { this.value += 1; return this.value }};console.log(a == 1 && a == 2 && a == 3) // true
-
如何使
a===1&&a===2&&a===3
的结果为true
// 使用 defineProperty 进行数据劫持var value = 0;Object.defineProperty(window,"a",{ get(){ return ++value; }})console.log(a===1&&a===2&&a===3) //true
实现一个无限累加函数
柯里化实现多参累加
相关推荐:javascript学习教程
Atas ialah kandungan terperinci Kemahiran JavaScript: membuka kotak dan penukaran jenis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

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

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)