最新ES8特性概述
ECMAScript 2017(ES8)特性概述 整理自 ES8 was Released and here are its Main New Features,归纳于笔者的现代 JavaScript 开发:语法基础与实践技巧系列文章中;也欢迎关注前端每周清单系列获得一手资讯。
ECMAScript 2017 或 ES8 与 2017 年六月底由 TC39 正式发布,可以在这里浏览完整的版本;而 ES8 中代表性的特征包括了字符串填充、对象值遍历、对象的属性描述符获取、 函数参数列表与调用中的尾部逗号、异步函数、共享内存与原子操作等。
字符串填充
ES8 中添加了内置的字符串填充函数,分别为 padStart 与 padEnd,该函数能够通过填充字符串的首部或者尾部来保证字符串达到固定的长度;开发者可以指定填充的字符串或者使用默认的空格,函数的声明如下:
str.padStart(targetLength [, padString]) str.padEnd(targetLength [, padString])
如上所示,函数的首个参数为目标长度,即最终生成的字符串长度;第二个参数即是指定的填充字符串:
'es8'.padStart(2); // 'es8' 'es8'.padStart(5); // ' es8' 'es8'.padStart(6, 'woof'); // 'wooes8' 'es8'.padStart(14, 'wow'); // 'wowwowwowwoes8' 'es8'.padStart(7, '0'); // '0000es8' 'es8'.padEnd(2); // 'es8' 'es8'.padEnd(5); // 'es8 ' 'es8'.padEnd(6, 'woof'); // 'es8woo' 'es8'.padEnd(14, 'wow'); // 'es8wowwowwowwo' 'es8'.padEnd(7, '6'); // 'es86666'
对象值遍历
Object.values 函数会返回指定对象的可枚举的属性值数组,数组中值顺序与 for-in 循环保持一致,函数的声明为:
Object.values(obj)
首个参数 obj 即为需要遍历的目标对象,它可以为某个对象或者数组(数组可以看做键为下标的对象):
const obj = { x: 'xxx', y: 1 }; Object.values(obj); // ['xxx', 1] const obj = ['e', 's', '8']; // same as { 0: 'e', 1: 's', 2: '8' }; Object.values(obj); // ['e', 's', '8'] // when we use numeric keys, the values returned in a numerical // order according to the keys const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' }; Object.values(obj); // ['yyy', 'zzz', 'xxx'] Object.values('es8'); // ['e', 's', '8']
而 Object.entries 方法则会将某个对象的可枚举属性与值按照二维数组的方式返回,数组中顺序与 Object.values 保持一致,该函数的声明与使用为:
const obj = { x: 'xxx', y: 1 }; Object.entries(obj); // [['x', 'xxx'], ['y', 1]] const obj = ['e', 's', '8']; Object.entries(obj); // [['0', 'e'], ['1', 's'], ['2', '8']] const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' }; Object.entries(obj); // [['1', 'yyy'], ['3', 'zzz'], ['10': 'xxx']] Object.entries('es8'); // [['0', 'e'], ['1', 's'], ['2', '8']]
对象的属性描述符获取
getOwnPropertyDescriptors 函数会返回指定对象的某个指定属性的描述符;该属性必须是对象自己定义而不是继承自原型链,函数的声明为:
Object.getOwnPropertyDescriptor(obj, prop)
obj 即为源对象,而 prop 即为需要查看的属性名;结果中包含的键可能有 configurable、enumerable、writable、get、set 以及 value。
const obj = { get es8() { return 888; } }; Object.getOwnPropertyDescriptor(obj, 'es8'); // { // configurable: true, // enumerable: true, // get: function es8(){}, //the getter function // set: undefined // }
函数参数列表与调用中的尾部逗号
该特性允许我们在定义或者调用函数时添加尾部逗号而不报错:
function es8(var1, var2, var3,) { // ... } es8(10, 20, 30,);
异步函数
ES8 中允许使用 async/await 语法来定义与执行异步函数,async 关键字会返回某个 AsyncFunction 对象;在内部实现中虽然异步函数与迭代器的实现原理类似,但是其并不会被转化为迭代器函数:
function fetchTextByPromise() { return new Promise(resolve => { setTimeout(() => { resolve("es8"); }, 2000); }); } async function sayHello() { const externalFetchedText = await fetchTextByPromise(); console.log(`Hello, ${externalFetchedText}`); // Hello, es8 } sayHello(); console.log(1); sayHello(); console.log(2); // 调用结果 1 // immediately 2 // immediately Hello, es8 // after 2 seconds
共享内存与原子操作
共享内存允许多个线程并发读写数据,而原子操作则能够进行并发控制,确保多个存在竞争关系的线程顺序执行。本部分则介绍了新的构造器 SharedArrayBuffer 与包含静态方法的命名空间对象 Atomics。Atomic 对象类似于 Math,我们无法直接创建其实例,而只能使用其提供的静态方法:
add /sub - 增加或者减去某个位置的某个值
and / or /xor - 进行位操作
load - 获取值
Atas ialah kandungan terperinci 最新ES8特性概述. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

es2017 ialah es8. Nama penuh es ialah "ECMAScript", yang merupakan bahasa skrip universal yang dilaksanakan mengikut piawaian ECMA-262 Versi yang dikeluarkan secara rasmi pada Jun 2017 secara rasmi dipanggil ECMAScript2017 (ES2017, kerana ia adalah versi ke-8 ECMAScript). boleh Dirujuk sebagai es8.

Gambaran Keseluruhan Masalah dan Penyelesaian Lebih Muatan Operator dalam C++ Pengenalan: Lebih muatan operator ialah ciri penting bahasa C++, yang membolehkan pengaturcara menyesuaikan operator sedia ada untuk mengendalikan jenis data tersuai. Walau bagaimanapun, beban berlebihan pengendali perlu digunakan dengan berhati-hati, kerana jika digunakan secara tidak wajar atau berlebihan, ia akan membawa kepada masalah seperti kebolehbacaan kod yang berkurangan, kekaburan dan kecekapan yang berkurangan. Artikel ini akan menggariskan masalah biasa dengan operator terlebih muatan dalam C++ dan menyediakan penyelesaian yang sepadan serta contoh kod. 1. Masalah dengan operator lebih muatan 1.1 Masalah kesamaran dalam operator lebih muatan

Tkinter ialah perpustakaan GUI yang berkuasa dalam python yang boleh digunakan untuk membuat aplikasi desktop merentas platform. Dengan kemudahan penggunaan dan pelbagai ciri, ia menyediakan pelbagai alatan untuk membina antara muka pengguna, mengendalikan acara dan mengurus susun atur. Mencipta Tetingkap GUI Untuk mencipta tetingkap GUI, anda perlu menggunakan kaedah Tkinter.Tk(). Kaedah ini mengembalikan objek Tk() yang mewakili tetingkap utama aplikasi. Tetingkap boleh mempunyai tajuk menggunakan kaedah title() dan saiz dan kedudukan tetingkap menggunakan kaedah geometri(). importtkinterastkroot=tk.Tk()root.title("Aplikasi Tkinter pertama saya")root.g

Artikel ini akan menyelesaikan dan berkongsi dengan anda ciri ECMAScript Anda akan mengambil masa sejam untuk memahami semua ciri ES6~ES12 dengan cepat. Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.

Mencapai ketersediaan aplikasi yang tinggi adalah penting untuk memastikan operasi perkhidmatan perniagaan kritikal yang lancar. Untuk aplikasi yang dibina dengan PHP, terdapat beberapa amalan terbaik yang boleh digunakan untuk mencapai ketersediaan 24/7. Pengimbangan beban yang gagal dan toleran kesalahan: Gunakan pengimbang beban bahagian belakang untuk mengagihkan trafik ke berbilang pelayan untuk mengelakkan satu titik kegagalan. Failover: Konfigurasikan mekanisme failover automatik untuk memindahkan trafik ke pelayan alternatif sekiranya berlaku kegagalan. Pengekodan tahan kesalahan: Gunakan teknik pengekodan tahan kesalahan, seperti RaiD atau kod pemadaman, untuk melindungi data daripada kegagalan cakera. Penskalaan automatik yang berlebihan dan anjal: Dayakan penskalaan automatik untuk menambah atau mengalih keluar pelayan secara dinamik berdasarkan beban. Arahan berbilang AZ: Sebarkan aplikasi ke berbilang Zon Ketersediaan (AZ) untuk memaksimumkan

Dengan pembangunan bahasa PHP, pembangun memerlukan lebih banyak alat untuk menyelesaikan keperluan dan cabaran aplikasi moden, salah satunya ialah pengaturcaraan dipacu peristiwa, dan perpustakaan EventLoop PHP8.0 dilahirkan untuk tujuan ini. Artikel ini akan memberikan gambaran keseluruhan dan pengenalan kepada perpustakaan. Apakah itu EventLoop Dalam aplikasi PHP tradisional, kebanyakan operasi adalah segerak. Dalam erti kata lain, program akan melaksanakan beberapa kod, kemudian tunggu sehingga data yang berkaitan kembali, dan kemudian terus melaksanakan kod berikutnya. Model pengaturcaraan ini berguna untuk beberapa aplikasi

Rangka kerja Yii ialah rangka kerja PHP moden berprestasi tinggi yang direka untuk memudahkan dan mempercepatkan pembangunan aplikasi WEB. Ia menyediakan asas teguh yang membolehkan pembangun menumpukan pada logik perniagaan dan bukannya butiran peringkat rendah. Seni Bina Modular Di Sebalik Tabir: Yii menggunakan seni bina modular supaya aplikasi boleh diperluas dan disesuaikan dengan mudah. Modul ialah blok kod bebas yang boleh digunakan semula yang boleh digunakan untuk melaksanakan fungsi tertentu, seperti pengurusan pengguna atau e-dagang. Corak MVC: Yii mengikut corak mvc (Model-View-Controller), yang memisahkan logik aplikasi daripada lapisan pembentangan. Ini menggalakkan kebolehselenggaraan kod dan meningkatkan kebolehujian aplikasi. Sokongan ORM: Yii menyediakan lapisan pemetaan hubungan objek (ORM) yang berkuasa yang membolehkan pembangun untuk

Gambaran Keseluruhan Rangkaian Wayarles Dengan perkembangan pesat teknologi, rangkaian wayarles telah menjadi bahagian yang amat diperlukan dalam kehidupan moden. Telefon mudah alih, komputer, rumah pintar dan peranti lain kami semuanya bergantung pada rangkaian wayarles untuk komunikasi dan sambungan. Dalam artikel ini, kami akan memberikan gambaran keseluruhan rangkaian wayarles dan membincangkan pembangunan, prinsip dan aplikasinya. Perkembangan rangkaian tanpa wayar boleh dikesan kembali kepada teknologi komunikasi radio pada abad ke-19. Pada masa itu, orang ramai menggunakan gelombang radio untuk merealisasikan penghantaran bunyi dan imej jarak jauh, merintis komunikasi tanpa wayar. Dengan perkembangan selanjutnya teknologi elektronik
