แผ่นโกง JavaScript ที่รวดเร็วและใช้งานได้จริงของ Toptal: ES6 and Beyond
เผยแพร่แล้ว: 2022-03-11ECMAScript 6 (ES6) เป็นข้อกำหนดมาตรฐานล่าสุดของ JavaScript ซึ่งเป็นภาษาโปรแกรมของเว็บ ตั้งแต่ HTML5 และการกำเนิดของ Node.js รันไทม์ที่ช่วยให้เราสามารถเรียกใช้ JavaScript บนเซิร์ฟเวอร์หรือเดสก์ท็อป JavaScript ได้รับโมเมนตัมที่ไม่เหมือนใคร มีอัตราการยอมรับที่เพิ่มขึ้นในหมู่องค์กร นำมันเข้าสู่การผลิต และด้วยเหตุนี้คุณสมบัติใหม่ล่าสุดจึงรอคอยอย่างมาก
เราสร้างชีตชีตนี้เป็นรายการฟีเจอร์ ES6 ที่เราใช้ทุกวัน พยายามอธิบายให้ครอบคลุมแต่กระชับในเวลาเดียวกัน วิธี API ใหม่จึงถูกแยกออกจากกัน สำหรับผู้ที่ต้องการ ให้ค้นหาอย่างรวดเร็วด้วยตัวเองหรือลองสำรวจเอกสาร MDN เพื่อดู API เวอร์ชันทดลองล่าสุด อย่างไรก็ตาม คุณลักษณะของขอบที่มีเลือดออกมากที่สุดบางอย่าง เช่น async
และ await
จากร่างข้อกำหนดถัดไป (ES7) จะรวมอยู่ด้วย ทั้งนี้เป็นเพราะนักพัฒนาของเราส่วนใหญ่กำลังจะใช้ทรานสพิลเลอร์อย่าง Babel เพื่อใช้ประโยชน์จาก JavaScript ใหม่ล่าสุด
คุณสามารถทดสอบเคล็ดลับที่กล่าวถึงบางส่วนได้โดยการรันโหนด REPL ด้วยคำสั่งนี้:
node --use-strict $(node --v8-options | grep harm | awk '{print $1}' | xargs) #ES6
หรือใช้ babel-node โดยตรงเพื่อใช้งาน Javascript ในคอนโซลของคุณให้เกิดประโยชน์สูงสุด
คลิกที่นี่เพื่อดาวน์โหลด JavaScript ES6 Cheat Sheet
JavaScript (ES6 ขึ้นไป) สูตรโกง
ค่าคงที่ | ให้ vs var | |
> const EULER = 2.7182818284 | > ค่าเฉลี่ย = 5 | |
คำเตือน! ถ้าอาร์เรย์หรืออ็อบเจ็กต์ การอ้างอิงจะคง ที่ ถ้าค่าคงที่คือการอ้างอิงไปยังอ็อบเจ็กต์ คุณยังคงสามารถปรับเปลี่ยนเนื้อหาได้ แต่อย่าเปลี่ยนตัวแปร | ||
> ค่าคงที่ = [] | ระวัง Temporal Dead Zones : | |
> console.log (val) // -> 'ไม่ได้กำหนด' | ||
เพราะมันเทียบเท่ากับ: | ||
เลขฐานสอง เลขฐานแปด และเลขฐานสิบหก | > var val | |
> 0b1001011101 // 605 | ||
ตัวแปรที่ประกาศด้วย "let/const" ไม่ได้รับการยก: | ||
ประเภทใหม่ | > console.log(val) | |
สัญลักษณ์ แผนที่ จุดอ่อนและชุด | ||
ฟังก์ชั่นลูกศร | ฟังก์ชันกำหนดขอบเขตใหม่ | |
> setTimeout(() => { | > { | |
เทียบเท่ากับฟังก์ชันนิรนาม | เทียบเท่ากับนิพจน์ฟังก์ชันที่เรียกใช้ทันที (IIFE) | |
> setTimeout (ฟังก์ชัน () { | > (ฟังก์ชัน () { | |
นวนิยายสัญกรณ์วัตถุ | การแก้ไขสตริงด้วยตัวอักษรเทมเพลต | |
// คุณสมบัติการคำนวณ // ตัวอักษรวัตถุ // เหมือนกับ } | > ชื่อ const = 'เสือ' // เราสามารถรักษาการขึ้นบรรทัดใหม่… | |
![]() | พารามิเตอร์เริ่มต้น | |
> ฟังก์ชั่น howAreYou (คำตอบ = 'ตกลง') { | ||
สัญญา | คลาส, มรดก, เซ็ตเตอร์, Getters | |
สัญญาใหม่ ((แก้ไข, ปฏิเสธ) => { | คลาสสี่เหลี่ยมผืนผ้าขยายรูปร่าง { | |
อาร์เรย์การทำลายล้าง | วัตถุทำลายล้าง | |
> ให้ [a, b, c, d] = [1, 2, 3, 4]; | > ให้ลุค = { อาชีพ: 'เจได', | |
ตัวดำเนินการสเปรด | ...ไปทำลายล้างอย่างบอส | |
// เปลี่ยนอาร์เรย์ให้คั่นด้วยจุลภาค | > const [ แมว หมา ...ปลา ] = [ | |
หรือทำดีกว่าผลักดัน | ...และการทำลายล้างในอนาคต ES7 | |
> ให้ arr = [1, 2, 3] | {a, b, ...rest} = {a:1, b:2, c:3, d:4} | |
อะซิงโครนัส ES7 | รอ ES7 | |
ฟังก์ชัน async schrodinger () { | พยายาม { | |
ส่งออก ES7 | กำลังนำเข้า ES7 | |
ฟังก์ชันการส่งออก sumTwo (a, b) { | นำเข้าปฏิกิริยาจาก 'ปฏิกิริยา' | |
เครื่องกำเนิดไฟฟ้า | ||
พวกเขา ส่งคืนวัตถุที่ใช้โปรโตคอลการวนซ้ำ กล่าวคือมีเมธอด next() ที่คืนค่า { value: < some value>, done: <true or false> } | ||
ฟังก์ชั่น * incRand (สูงสุด) { // เครื่องหมายดอกจันกำหนดสิ่งนี้เป็นเครื่องกำเนิด | ||
> var rng = incRand(2) // ส่งกลับวัตถุกำเนิด |