วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: เริ่มต้นด้วยการเรียนรู้
"ถ้าคุณรู้วิธีใช้ ES6 ก็ใช้มัน!": นี่คือ "เสียงคำราม" ที่ผู้นำทำกับสมาชิกในทีมในระหว่างการตรวจสอบโค้ดเพราะเขาค้นพบหลายอย่าง ระหว่างการตรวจสอบโค้ด ควรใช้วิธีเขียน ES5 ไม่ได้หมายความว่าการเขียนใน ES5 จะไม่ได้ผลและจะมีข้อบกพร่องเกิดขึ้น
มันบังเอิญที่ผู้นำคนนี้มีเครื่องรางโค้ด เขาไม่พอใจกับสมาชิกที่มีประสบการณ์ในการเขียนโค้ดในระดับนี้มา 3 ถึง 5 ปีและเอาแต่บ่นเกี่ยวกับโค้ดนี้ อย่างไรก็ตาม ฉันรู้สึกว่าฉันยังคงได้ประโยชน์มากมายจากการร้องเรียนของเขา ดังนั้นฉันจึงบันทึกคำร้องเรียนของผู้นำและแบ่งปันให้กับเพื่อนนักขุด หากคุณคิดว่ามันมีประโยชน์ ก็ยกนิ้วให้พวกเขา หากมีข้อผิดพลาดหรือวิธีเขียนที่ดีกว่า คุณยินดีที่จะแสดงความคิดเห็น
PS: ไวยากรณ์ JS หลังจาก ES5 เรียกรวมกันว่า ES6! - -
1. Tucao เกี่ยวกับการรวบรวมค่า
Value เป็นเรื่องธรรมดามากในโปรแกรม เช่น การรับค่าจากอ็อบเจ็กต์ obj
const obj = { ก:1, ข:2, ค:3, จ:4, อ:5, }
ทูเคา :
const a = obj.a; const b = obj.b; const c = obj.c; const d = obj.d; const e = obj.e;
หรือ
const f = obj.a + obj.d; const g = obj.c + obj.e;
Tucao: "คุณไม่สามารถใช้การกำหนดการทำลายล้างของ ES6 เพื่อรับค่าได้หรือไม่ การใช้โค้ด 5 บรรทัดในโค้ด 1 บรรทัดนั้นดีหรือไม่ เพียงใช้ชื่อวัตถุบวก ชื่อแอตทริบิวต์เพื่อรับค่า ถ้ามันโอเคถ้าชื่อวัตถุสั้น แต่ถ้ายาวมาก ชื่อวัตถุจะอยู่ทุกที่ในโค้ด "
การปรับปรุง :
const {a,b,c,d,e} = วัตถุ; const ฉ = a + d; const g = c + e;
ข้อโต้แย้ง
ไม่ใช่ว่าฉันไม่ได้ใช้การกำหนดการทำลายล้างของ ES6 แต่ชื่อแอตทริบิวต์ในวัตถุข้อมูลที่ส่งคืนโดยเซิร์ฟเวอร์ไม่ใช่สิ่งที่ฉันต้องการ เพื่อให้ได้ค่าด้วยวิธีนี้ สร้างการมอบหมายการแวะผ่านอีกครั้ง
ดูเหมือน
ว่าความเข้าใจของคุณเกี่ยวกับการทำลายล้างและการมอบหมายงานของ ES6 ยังไม่เพียงพอ ถ้าชื่อของตัวแปรที่คุณต้องการสร้างไม่สอดคล้องกับชื่อคุณสมบัติของวัตถุ คุณสามารถเขียน:
const {a:a1} = obj; console.log(a1); // 1การกำหนดการทำลายโครงสร้าง ES6
เพิ่มเติม
นั้นใช้งานง่าย แต่โปรดทราบว่าอ็อบเจ็กต์ที่ถูกทำลายนั้นไม่สามารถ undefined
หรือ null
มิฉะนั้นจะรายงานข้อผิดพลาด ดังนั้นวัตถุที่ทำลายโครงสร้างจะต้องได้รับค่าเริ่มต้น
const {a,b,c,d,e} = obj ||. {};
2. การร้องเรียนเกี่ยวกับการรวมข้อมูล
เช่น การรวมสองอาร์เรย์และการรวมสองวัตถุ
const = [1,2,3]; constข = [1,5,6]; const c = a.concat(b);//[1,2,3,1,5,6] const obj1 = { ก:1, - const obj2 = { ข:1, - const obj = Object.assign({}, obj1, obj2);//{a:1,b:1}
บ่นว่า
ตัวดำเนินการส่วนขยายของ ES6 ถูกลืมหรือไม่ และการรวมอาร์เรย์เข้าด้วยกันไม่ถือเป็นการขจัดข้อมูลซ้ำซ้อนหรือไม่
ปรับปรุง
const a = [1,2,3]; constข = [1,5,6]; const c = [...ชุดใหม่([...a,...b])];//[1,2,3,5,6] const obj1 = { ก:1, - const obj2 = { ข:1, - const obj = {...obj1,...obj2};//{a:1,b:1}
3. Tucao เกี่ยวกับการประกบสตริง
const name = 'Xiao Ming'; คะแนนคอนสตรัค = 59; ให้ผลลัพธ์ = ''; ถ้า(คะแนน > 60){ result = `${name} คะแนนสอบผ่าน`; }อื่น{ result = `${name} สอบไม่ผ่าน`; }
การบ่นเกี่ยวกับ
การใช้เทมเพลตสตริง ES6 เช่นเดียวกับที่คุณทำ จะเป็นการดีกว่าที่จะไม่ใช้มัน คุณไม่รู้ว่าการดำเนินการใดที่สามารถทำได้ใน ${}
ใน ${}
คุณสามารถใส่นิพจน์ JavaScript ดำเนินการ และอ้างอิงคุณสมบัติของอ็อบเจ็กต์ได้
ปรับปรุง
ชื่อ const = 'Xiao Ming'; คะแนนคอนสตรัค = 59; const result = `${name}${score > 60?''s test Score failed'}`;
4. ความคิดเห็นเกี่ยวกับเงื่อนไขการตัดสินใน if
( พิมพ์ == 1 || พิมพ์ == 2 || พิมพ์ == 3 || พิมพ์ == 4 || - - }
บ่นว่า
วิธี includes
อาร์เรย์อาร์เรย์จะถูกใช้ใน ES6 หรือไม่?
ปรับปรุง
เงื่อนไข const = [1,2,3,4]; ถ้า ( เงื่อนไขรวม (ประเภท) ) { - }
5. ข้อร้องเรียนเกี่ยวกับการค้นหารายการ
ในโครงการ ฟังก์ชั่นการค้นหาของรายการที่ไม่แบ่งหน้าบางรายการถูกนำมาใช้โดยส่วนหน้า โดยทั่วไป การค้นหาจะแบ่งออกเป็นการค้นหาที่แม่นยำและการค้นหาแบบคลุมเครือ การค้นหาเรียกอีกอย่างว่าการกรอง และโดยทั่วไปจะดำเนินการโดยใช้ filter
const = [1,2,3,4,5]; ผล const = a.filter( รายการ =>{ คืนสินค้า === 3 - )หากคุณต้องการ
บ่น
เกี่ยวกับการค้นหาแบบตรงทั้งหมด คุณจะไม่ใช้ find
ใน ES6 ใช่ไหม คุณเข้าใจการปรับประสิทธิภาพให้เหมาะสมหรือไม่ หากพบรายการที่ตรงตามเงื่อนไขในวิธี find
รายการนั้นจะไม่สำรวจอาร์เรย์ต่อไป
ปรับปรุง
const a = [1,2,3,4,5]; ผล const = a.find( รายการ =>{ คืนสินค้า === 3 - )
6. ข้อร้องเรียนเกี่ยวกับอาร์เรย์ที่แบนราบ
ในข้อมูล JSON ของแผนก ชื่อแอตทริบิวต์คือรหัสแผนก และค่าแอตทริบิวต์คือชุดอาร์เรย์ของรหัสสมาชิกแผนก ตอนนี้เราจำเป็นต้องแยกรหัสสมาชิกแผนกทั้งหมดลงในคอลเลกชันอาร์เรย์
const deps = { 'แผนกจัดซื้อ':[1,2,3], 'ฝ่ายบุคคล':[5,8,12], 'ฝ่ายธุรการ':[5,14,79], 'กระทรวงคมนาคม':[3,64,105], - ให้สมาชิก = []; สำหรับ (ให้รายการเป็น deps){ ค่า const = deps [รายการ]; ถ้า (Array.isArray (ค่า)) { สมาชิก = [...สมาชิก,...ค่า] - - member = [...new Set(member)]
จำเป็นหรือไม่ที่จะต้องสำรวจเพื่อให้ได้ค่าแอ็ตทริบิวต์ทั้งหมดของอ็อบเจ็กต์
?
Object.values
ลืม? นอกจากนี้ยังมีกระบวนการทำให้ราบเรียบที่เกี่ยวข้องกับอาร์เรย์ด้วย ทำไมไม่ลองใช้วิธี flat
ที่ ES6 เตรียมไว้ให้ล่ะ? วนซ้ำซ้อนวนให้แบน?
ปรับปรุง
const deps = { 'แผนกจัดซื้อ':[1,2,3], 'ฝ่ายบุคคล':[5,8,12], 'ฝ่ายธุรการ':[5,14,79], 'กระทรวงคมนาคม':[3,64,105], - la member = Object.values(deps).flat(Infinity);
Infinity
ถูกใช้เป็นพารามิเตอร์ของ flat
ดังนั้นจึงไม่จำเป็นต้องทราบขนาดของอาร์เรย์ที่แบน
เสริมว่า
วิธี flat
ไม่รองรับเบราว์เซอร์ IE
7. Tucao เกี่ยวกับการรับค่าแอตทริบิวต์ของวัตถุ
const
name = obj && obj.name;
จะใช้ตัวดำเนินการลูกโซ่ทางเลือกใน ES6 หรือไม่
ปรับปรุง
const name = obj?.name;
8. ความคิดเห็นเกี่ยวกับการเพิ่มแอตทริบิวต์ของวัตถุ
เมื่อเพิ่มคุณลักษณะให้กับวัตถุ สิ่งที่ควรทำหากชื่อแอตทริบิวต์เปลี่ยนแปลงแบบไดนามิก
ให้ obj = {}; ให้ดัชนี = 1; ให้คีย์ = `topic${index}`; obj[key] = 'เนื้อหาหัวข้อ';
Tucao
เหตุใดเราจึงต้องสร้างตัวแปรเพิ่มเติม ฉันสงสัยว่านิพจน์สามารถใช้กับชื่อคุณสมบัติของวัตถุใน ES6 ได้หรือไม่
ปรับปรุง
ให้ obj = {}; ให้ดัชนี = 1; obj[`topic${index}`] = 'เนื้อหาหัวข้อ';
9. การตัดสินว่ากล่องอินพุตไม่ว่างเปล่า
เมื่อประมวลผลธุรกิจที่เกี่ยวข้องกับกล่องอินพุต มักจะตัดสินว่ากล่องอินพุตไม่มีค่าอินพุต
ถ้า (ค่า !== ค่า null && !== ไม่ได้กำหนด && ค่า !== ''){ - }
คุณเคยได้ยินเกี่ยวกับตัวดำเนินการรวมค่า Null ใหม่ใน ES6 บ้างไหม คุณจำเป็นต้องเขียนเงื่อนไขมากมาย
หรือไม่
ถ้า((ค่า??'') !== ''){ - }
10. ข้อร้องเรียนเกี่ยวกับฟังก์ชันอะซิงโครนัส
ฟังก์ชันอะซิงโครนัสเป็นเรื่องปกติมากและมักนำไปใช้โดยใช้ Promise
const fn1 = () =>{ คืนสัญญาใหม่ ((แก้ไข, ปฏิเสธ) => { setTimeout(() => { แก้ไข (1); }, 300); - - const fn2 = () =>{ คืนสัญญาใหม่ ((แก้ไข, ปฏิเสธ) => { setTimeout(() => { แก้ไข (2); }, 600); - - const fn = () =>{ fn1().แล้ว(res1 =>{ console.log(res1); // 1 fn2().แล้ว(res2 =>{ console.log(res2) - - }หาก
คุณเรียก
ใช้ฟังก์ชันอะซิงโครนัสเช่นนี้ คุณจะไม่กลัวการเรียกกลับที่เลวร้าย!
ปรับปรุง
const fn = async () =>{ const res1 = รอ fn1(); const res2 = รอ fn2(); console.log(res1); // 1 console.log(res2);// 2 }
ภาคผนวก
: เมื่อทำการร้องขอพร้อมกัน คุณยังคงต้องใช้ Promise.all()
const fn = () =>{ Promise.all([fn1(),fn2()]).then(res =>{ console.log(res);//[1,2] - }
หากมีคำขอเกิดขึ้นพร้อมกัน ตราบใดที่ฟังก์ชันอะซิงโครนัสฟังก์ชันใดฟังก์ชันหนึ่งเสร็จสมบูรณ์ ผลลัพธ์จะถูกส่งกลับ และต้องใช้ Promise.race()
11.
คุณสามารถหักล้างข้อร้องเรียนของผู้นำทั้ง 10 ข้อข้างต้นได้ หากการโต้แย้งของคุณสมเหตุสมผล ฉันจะหักล้างข้อร้องเรียนดังกล่าวให้คุณในการประชุมทบทวนโค้ดครั้งถัดไป
นอกจากนี้หากมีข้อผิดพลาดในเนื้อหาที่จัดไว้ข้างต้นโปรดแก้ไขในความคิดเห็นขอบคุณมาก
บทความนี้ทำซ้ำจาก: https://juejin.cn/post/7016520448204603423
ผู้แต่ง: Hongchen Lianxin
[คำแนะนำวิดีโอการสอนที่เกี่ยวข้อง: ส่วนหน้าของเว็บ]
ข้างต้นคือสิ่งที่คุณบอกว่าคุณสามารถใช้ ES6 ได้ จากนั้นใช้งานได้อย่างรวดเร็ว! สำหรับรายละเอียดเพิ่มเติม โปรดอ่านบทความอื่นๆ ที่เกี่ยวข้องบนเว็บไซต์ php Chinese!