ArrayBuffer ialah struktur data peringkat rendah yang mewakili sebahagian kecil memori. Ia digunakan dalam konteks di mana anda perlu mengendalikan data binari secara langsung, seperti pemprosesan imej, pengendalian fail atau WebAssembly.
Kes Penggunaan Biasa:
ArrayBuffer telah dibuat dengan saiz tetap dan tidak boleh diubah suai selepas penciptaan. Ini bermakna mengubah saiz memerlukan membuat penimbal baharu dan menyalin data secara manual.
let buffer = new ArrayBuffer(10); // Fixed size of 10 bytes // To "resize", you had to create a new ArrayBuffer: let newBuffer = new ArrayBuffer(15); new Uint8Array(newBuffer).set(new Uint8Array(buffer));
Anda boleh mencipta objek ArrayBuffer yang boleh diubah saiz dengan pilihan untuk mengubah saiz dan memindahkan kandungannya, menjadikannya lebih fleksibel untuk mengendalikan data panjang berubah-ubah.
Contoh Dikembangkan:
let buffer = new ArrayBuffer(10, { maxByteLength: 20 }); console.log(buffer.byteLength); // Initial length: 10 bytes // Resize the buffer buffer.resize(15); console.log(buffer.byteLength); // Resized length: 15 bytes // Transfer the buffer's contents to a new buffer with a different length let newBuffer = buffer.transfer(5); console.log(newBuffer.byteLength); // Transferred length: 5 bytes
Kebaikan:
Keburukan:
Ungkapan biasa (regex) ialah jujukan aksara yang membentuk corak carian. Ia biasanya digunakan untuk tugas seperti mencari, menggantikan dan mengesahkan rentetan.
Kes Penggunaan Biasa:
Set regex terhad dalam cara ia boleh mewakili julat aksara atau gabungan yang kompleks. Mencipta set khusus memerlukan corak kata kerja.
// Matching "a", "c", "d", or "e" required explicit listing: let regex = /[acd]|e/; console.log(regex.test("d")); // true
Bendera /v memperkenalkan operasi set lanjutan, membenarkan corak yang lebih ekspresif.
Contoh Dikembangkan:
// Using the /v flag for advanced sets let regex = /[a[c-e]]/v; // Matches "a", "c", "d", or "e" console.log(regex.test("d")); // true console.log(regex.test("b")); // false
Kebaikan:
Keburukan:
Janji ialah objek yang mewakili penyiapan atau kegagalan operasi tak segerak. Ia membolehkan pembangun menulis kod tak segerak yang boleh mengendalikan hasil akhirnya dengan cara yang lebih mudah dibaca berbanding kod berasaskan panggilan balik tradisional.
Kes Penggunaan Biasa:
Mengendalikan menyelesaikan dan menolak fungsi secara manual di luar pembina Promise adalah menyusahkan.
let buffer = new ArrayBuffer(10); // Fixed size of 10 bytes // To "resize", you had to create a new ArrayBuffer: let newBuffer = new ArrayBuffer(15); new Uint8Array(newBuffer).set(new Uint8Array(buffer));
Promise.withResolvers memudahkan corak ini dengan mengembalikan objek yang mengandungi fungsi janji, selesaikan dan tolak secara langsung.
Contoh Dikembangkan:
let buffer = new ArrayBuffer(10, { maxByteLength: 20 }); console.log(buffer.byteLength); // Initial length: 10 bytes // Resize the buffer buffer.resize(15); console.log(buffer.byteLength); // Resized length: 15 bytes // Transfer the buffer's contents to a new buffer with a different length let newBuffer = buffer.transfer(5); console.log(newBuffer.byteLength); // Transferred length: 5 bytes
Kebaikan:
Keburukan:
Pengelompokan merujuk kepada proses mengkategorikan data ke dalam koleksi berdasarkan sifat atau kriteria yang dikongsi. Ia memudahkan analisis dan pembentangan data.
Kes Penggunaan Biasa:
Data pengelompokan selalunya terlibat menggunakan kaedah reduce() atau logik tersuai, yang boleh menjadi verbose dan berulang.
// Matching "a", "c", "d", or "e" required explicit listing: let regex = /[acd]|e/; console.log(regex.test("d")); // true
Object.groupBy dan Map.groupDengan memudahkan pengumpulan data.
Contoh Dikembangkan:
// Using the /v flag for advanced sets let regex = /[a[c-e]]/v; // Matches "a", "c", "d", or "e" console.log(regex.test("d")); // true console.log(regex.test("b")); // false
Kebaikan:
Keburukan:
Atomics membenarkan operasi pada memori dikongsi yang boleh diakses oleh berbilang pekerja. Ini penting untuk pengkomputeran selari, di mana tugas perlu disegerakkan dan selamat daripada keadaan perlumbaan.
Kes Penggunaan Biasa:
Menunggu perubahan pada memori dikongsi perlu dilakukan secara serentak atau memerlukan kod penyelesaian yang kompleks.
let buffer = new ArrayBuffer(10); // Fixed size of 10 bytes // To "resize", you had to create a new ArrayBuffer: let newBuffer = new ArrayBuffer(15); new Uint8Array(newBuffer).set(new Uint8Array(buffer));
Atomics.waitAsync membenarkan pembangun menunggu secara tak segerak untuk perubahan dalam memori yang dikongsi, memudahkan penyelarasan.
Contoh Dikembangkan:
let buffer = new ArrayBuffer(10, { maxByteLength: 20 }); console.log(buffer.byteLength); // Initial length: 10 bytes // Resize the buffer buffer.resize(15); console.log(buffer.byteLength); // Resized length: 15 bytes // Transfer the buffer's contents to a new buffer with a different length let newBuffer = buffer.transfer(5); console.log(newBuffer.byteLength); // Transferred length: 5 bytes
Kebaikan:
Keburukan:
Unicode ialah standard untuk perwakilan teks yang memastikan aksara daripada bahasa dan skrip berbeza boleh diwakili secara konsisten merentas platform. Kadangkala, rentetan Unicode boleh mempunyai isu seperti aksara pengganti yang tidak berpasangan, yang boleh membawa kepada ralat atau tingkah laku yang tidak dijangka.
Isu Biasa:
Memastikan rentetan Unicode yang dibentuk dengan baik memerlukan semakan dan penukaran tersuai.
// Matching "a", "c", "d", or "e" required explicit listing: let regex = /[acd]|e/; console.log(regex.test("d")); // true
Kaedah isWellFormed dan toWellFormed yang baharu memudahkan untuk menyemak dan membetulkan rentetan.
Contoh Dikembangkan:
// Using the /v flag for advanced sets let regex = /[a[c-e]]/v; // Matches "a", "c", "d", or "e" console.log(regex.test("d")); // true console.log(regex.test("b")); // false
Kebaikan:
Keburukan:
Feature | Description | Example |
---|---|---|
Resizable ArrayBuffer | Allows resizing of ArrayBuffer objects. | buffer.resize(15); |
Transferable ArrayBuffer | Enables transferring ArrayBuffer without copying data. | let newBuffer = buffer.transfer(5); |
/v Flag for RegExp | Supports advanced set operations in regex. | /[a[c-e]]/v |
Promise.withResolvers | Simplifies custom Promise construction. | let { promise, resolve } = Promise.withResolvers(); |
Object.groupBy and Map.groupBy | Groups data by a callback result. | Object.groupBy(array, item => item[0]); |
Atomics.waitAsync | Asynchronously waits on shared memory changes. | Atomics.waitAsync(int32, 0, 0).value.then(...); |
String.isWellFormed and toWellFormed | Checks and fixes Unicode strings for well-formedness. | str.isWellFormed(); str.toWellFormed(); |
Atas ialah kandungan terperinci Meneroka pdates ECMAScript: Panduan Pemula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!