คำแนะนำของ Babel สำหรับ ES6พูดว่า:
letvarเป็นใหม่
เห็นได้ชัดว่าแตกต่างเพียงว่าvarได้รับการกำหนดขอบเขตในปัจจุบันฟังก์ชั่นในขณะที่letได้รับการกำหนดขอบเขตในปัจจุบันบล็อก มีตัวอย่างที่ดีใน   คำตอบนี้
ฉันไม่เห็นเหตุผลที่จะใช้varในรหัส ES6 แม้ว่าคุณต้องการกำหนดขอบเขตตัวแปรที่กำหนดให้กับฟังก์ชันทั้งหมดคุณสามารถทำได้ด้วยletการใส่การประกาศที่ด้านบนของบล็อกฟังก์ชันซึ่งเป็นสิ่งที่คุณควรทำด้วยvarอย่างไรก็ตามเพื่อระบุขอบเขตที่แท้จริง และถ้าคุณต้องการกำหนดขอบเขตบางสิ่งให้ละเอียดยิ่งขึ้นในforบล็อกหรือบางอย่างคุณก็สามารถทำได้เช่นกัน
ดังนั้นสัญชาตญาณของฉันคือหยุดใช้varทั้งหมดเมื่อเขียนรหัส ES6
คำถามของฉันคือฉันผิดเกี่ยวกับเรื่องนี้? มีกรณีที่ถูกต้องตามกฎหมายที่varจะได้รับความนิยมมากกว่าlet?
letคำแถลงที่ด้านบนสุดของฟังก์ชั่นฉันคิดว่ามันชัดเจนว่าคุณตั้งใจจะกำหนดขอบเขตให้กับฟังก์ชันทั้งหมด ฉันไม่คิดว่าการใช้varทำให้ชัดเจนกว่าการค้นหาที่ด้านบน
                varยังคงมีอยู่คือความเข้ากันได้ย้อนหลัง หากไม่ใช่เพราะสิ่งนั้นพวกเขาจะลบออกvarไปโดยสิ้นเชิงหรือไม่เคยแนะนำมาletก่อนเลยแทนที่จะเปลี่ยนความหมายของvarสิ่งที่มันควรจะเป็นมาตลอด
                varดูผอมไปสำหรับฉันและไม่เพียงพอที่จะรับประกันว่ามีตัวแปรชนิดที่สามที่กระโดดไปมา คุณสามารถกำหนดขอบเขต a letให้กับฟังก์ชั่นทั้งหมดได้ง่ายๆโดยวางไว้ที่ด้านบนสุดของฟังก์ชั่นซึ่งมีความตั้งใจชัดเจนกว่าการเขียนvarในบล็อก (เพื่อให้สามารถยกออกจากบล็อกนั้นเพื่อให้คุณสามารถใช้มันนอกบล็อกได้ - แปลก) เขาเตือนว่าถ้าคุณกำหนดขอบเขตให้letกับฟังก์ชั่นแล้ว "เป็นเพียงตำแหน่งที่ส่งสัญญาณความแตกต่างมากกว่าไวยากรณ์" แต่ฉันคิดว่านั่นเป็นสิ่งที่ดี
                varเขา ตัวอย่างที่เขานำเสนอเพื่อการรักษาvarดูเหมือนจะถูกจัดทำขึ้น - และมีพื้นฐานมาจากข้อผิดพลาดการเข้ารหัสที่รุนแรง จะดีกว่ามากหากพบข้อผิดพลาดและถูกบังคับให้แก้ไขข้อผิดพลาดดังกล่าวมากกว่าใช้ฟังก์ชั่นภาษาที่ปล่อยให้มันหนีไป! มีอะไรต่อไปแนะนำให้ห่อทุกอย่างด้วยการลอง / จับเพื่อป้องกันการล่ม ส่วนที่เหลือของลิงค์นั้นดี แต่ฉันไม่เห็นด้วยกับส่วนนั้น
                
varเป็นตัวบ่งชี้ที่มีสติว่าตัวแปรนี้มีจุดมุ่งหมายเพื่อกำหนดขอบเขตให้กับฟังก์ชั่นทั้งหมดอาจเป็นการประชุมที่มีประโยชน์ .