เมื่อเร็ว ๆ นี้เมื่อดูรหัสส่วนหน้าจากต่างประเทศฉันพบว่าคุณสมบัติใหม่ของ ES6 ได้รับความนิยมมากโดยเฉพาะอย่างยิ่ง Let และแอปพลิเคชันเป็นเรื่องธรรมดามาก
แม้ว่าการใช้งานของ LET นั้นเหมือนกับ VAR แต่ก็มีการปรับปรุงมากมายในแง่ของไวยากรณ์และความหมายและประสิทธิภาพ มาเปรียบเทียบจากสองด้านนี้กัน
ไวยากรณ์ >>
สำหรับ (var i = 0; i <2; i ++) {console.log ('ด้านนอก i:'+i); สำหรับ (var i = 0; i <2; i ++) {console.log ('inner i:'+i);}}นี่เป็นลูปซ้อนกันทั่วไปซึ่งทั้งหมดนี้กำหนดตัวแปรที่จะนับและผลการดำเนินการมีดังนี้:
ด้านนอกฉัน: 0
INNER I: 0
INNER I: 1
คุณจะเห็นว่าวงรอบนอกถูกขัดจังหวะเนื่องจากค่าของฉันถูกแก้ไขโดยลูปด้านใน ทางออกปกติคือการใช้ตัวแปรอื่น ๆ ในลูปด้านใน แต่อาจทำให้เกิดข้อผิดพลาดหากคุณบังเอิญ
ตอนนี้เปลี่ยน var เพื่อให้
สำหรับ (ให้ i = 0; i <2; i ++) {console.log ('ด้านนอก i:'+i); สำหรับ (ให้ i = 0; i <2; i ++) {console.log ('inner i:'+i);}}ผลลัพธ์ผลลัพธ์คือ:
ด้านนอกฉัน: 0
INNER I: 0
INNER I: 1OUTER I: 1
INNER I: 0
INNER I: 1
มันเป็นเรื่องปกติเลเยอร์ด้านในและด้านนอกไม่มีผลเพราะปล่อยให้ขอบเขตของตัวแปรภายในบล็อกของตัวเองเท่านั้น
ตัวอย่างที่ 2
console.log (a); var a = 'hi';
ผลลัพธ์ผลลัพธ์ไม่ได้กำหนด การดำเนินการของ log (a) คือก่อนที่จะประกาศตัวแปร ทำไมไม่มีข้อผิดพลาด? เพราะเอฟเฟกต์จริงของรหัสสองบรรทัดนี้คือ:
var a; console.log (a); a = 'hi';
เมื่อแยกวิเคราะห์รหัส JS การประกาศตัวแปรจะได้รับแจ้งให้ถึงตำแหน่งเริ่มต้นซึ่งทำให้เกิดความสับสน
หลังจากใช้ LET แทนจะไม่มีปัญหาและจะมีการรายงานข้อผิดพลาดโดยตรง
console.log (a); // Uncaught ReferenceRorror: A ไม่ได้กำหนด A = 'HI';
การทดสอบประสิทธิภาพอย่างง่าย
var start = + วันที่ใหม่ (); สำหรับ (var i = 0; i <1000000; i ++) {var num = 123; var str = 'abc'; var obj = {key: 'value'}; var arr = ['บิล', 'dell'];} var end = + วันที่ใหม่ ();ผลการดำเนินการเฉลี่ยภายใต้ Firefox คือ 53ms
เปลี่ยนเป็นปล่อยให้
'ใช้ Strict'var start = + วันที่ใหม่ (); สำหรับ (var i = 0; i <1000000; i ++) {ให้ num = 123; ให้ str =' abc '; ให้ obj = {key:' value '}; ให้ arr =' บิล ',' dell '];ผลลัพธ์เฉลี่ยคือ 5ms และการเร่งความเร็วนั้นชัดเจน
ข้างต้นเป็นข้อได้เปรียบทางไวยากรณ์ใหม่ของ JavaScript6 ขอแนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!