ความหมายของvar
และlet
var
และlet
เป็นคำสั่งให้กับเครื่องและโปรแกรมเมอร์อื่น ๆ :
ฉันตั้งใจว่ามูลค่าของการมอบหมายนี้จะเปลี่ยนไประหว่างการดำเนินการ อย่าพึ่งพาค่าที่สุดของการมอบหมายนี้
ผลกระทบของการใช้var
และlet
var
และlet
บังคับให้โปรแกรมเมอร์รายอื่นอ่านโค้ดที่แทรกเข้าไปทั้งหมดจากการประกาศไปจนถึงการใช้งานในที่สุดและเหตุผลเกี่ยวกับมูลค่าของการมอบหมาย ณ จุดนั้นในการดำเนินการของโปรแกรม
พวกเขาทำให้เหตุผลที่เครื่องอ่อนแอสำหรับ ESLint และบริการภาษาอื่น ๆ เพื่อตรวจสอบชื่อตัวแปรที่พิมพ์ผิดในการกำหนดและการใช้ขอบเขตของชื่อตัวแปรขอบเขตด้านนอกในภายหลังซึ่งขอบเขตด้านในลืมประกาศ
พวกเขายังทำให้ runtimes เรียกใช้การวนซ้ำจำนวนมากบน codepaths ทั้งหมดเพื่อตรวจสอบว่าจริง ๆ แล้วมันคือค่าคงที่ก่อนที่พวกเขาจะสามารถปรับให้เหมาะสม แม้ว่าจะมีปัญหาน้อยกว่าการตรวจจับข้อบกพร่องและความเข้าใจของนักพัฒนา
ควรใช้เมื่อไร const
const
ถ้าค่าของการอ้างอิงไม่เปลี่ยนแปลงในช่วงเวลาของการดำเนินการไวยากรณ์ที่ถูกต้องในการแสดงของโปรแกรมเมอร์เจตนาคือ สำหรับวัตถุการเปลี่ยนค่าของการอ้างอิงหมายถึงการชี้ไปยังวัตถุอื่นเนื่องจากการอ้างอิงนั้นไม่เปลี่ยนรูป แต่วัตถุนั้นไม่ได้
" const
วัตถุ"
สำหรับการอ้างอิงวัตถุตัวชี้ไม่สามารถเปลี่ยนเป็นวัตถุอื่น แต่วัตถุที่สร้างและกำหนดให้กับการconst
ประกาศนั้นไม่แน่นอน คุณสามารถเพิ่มหรือลบรายการออกจากconst
อาร์เรย์ที่อ้างอิงและกลายพันธุ์คีย์คุณสมบัติบนconst
วัตถุที่ถูกอ้างอิง
เพื่อให้บรรลุวัตถุที่ไม่เปลี่ยนรูป (ซึ่งทำให้รหัสของคุณง่ายขึ้นสำหรับเหตุผลเกี่ยวกับมนุษย์และเครื่องจักร) คุณสามารถObject.freeze
วัตถุที่ประกาศ / การมอบหมาย / การสร้างเช่นนี้:
const Options = Object.freeze(['YES', 'NO'])
Object.freeze มีผลกระทบต่อประสิทธิภาพการทำงาน แต่รหัสของคุณอาจช้าด้วยเหตุผลอื่น คุณต้องการโปรไฟล์
นอกจากนี้คุณยังสามารถห่อหุ้มวัตถุที่ไม่แน่นอนในเครื่องของรัฐและส่งกลับสำเนาลึกเป็นค่า (นี่คือการทำงานของ Redux และ React state) ดูที่การหลีกเลี่ยงสถานะโกลบอลที่ไม่แน่นอนใน Browser JSสำหรับตัวอย่างของวิธีการสร้างสิ่งนี้จากหลักการแรก
เมื่อใดvar
และlet
เป็นคู่ที่ดี
let
และvar
เป็นตัวแทนของรัฐที่ไม่แน่นอน ในความคิดของฉันควรใช้เพื่อจำลองสถานการณ์ที่ไม่แน่นอนที่เกิดขึ้นจริงเท่านั้น สิ่งที่ต้องการ " การเชื่อมต่อยังมีชีวิตอยู่? "
สิ่งเหล่านี้ถูกห่อหุ้มอย่างดีที่สุดในเครื่องสถานะที่ทดสอบได้ซึ่งแสดงค่าคงที่ที่แสดง " สถานะปัจจุบันของการเชื่อมต่อ " ซึ่งเป็นค่าคงที่ ณ จุดใดก็ได้ในเวลาและสิ่งที่เหลืออยู่ในรหัสของคุณสนใจจริง ๆ
การเขียนโปรแกรมนั้นยากพอกับการเขียนผลข้างเคียงและการแปลงข้อมูล เปลี่ยนทุกฟังก์ชั่นให้กลายเป็นเครื่องสถานะที่ไม่สามารถทดสอบได้โดยการสร้างสถานะที่ไม่แน่นอนด้วยตัวแปรที่มีเพียงความซับซ้อน
สำหรับคำอธิบายที่เหมาะสมยิ่งขึ้นดูชุนกลายพันธุ์ - const
กรณีสำหรับ