คำแนะนำของ Babel สำหรับ ES6พูดว่า:
let
var
เป็นใหม่
เห็นได้ชัดว่าแตกต่างเพียงว่า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
เป็นตัวบ่งชี้ที่มีสติว่าตัวแปรนี้มีจุดมุ่งหมายเพื่อกำหนดขอบเขตให้กับฟังก์ชั่นทั้งหมดอาจเป็นการประชุมที่มีประโยชน์ .