มีอย่างไม่แตกต่างกันในความหมายหรือประสิทธิภาพใน JavaScript หรือ ActionScript
var
เป็นคำสั่งสำหรับ parser และไม่ใช่คำสั่งที่ถูกเรียกใช้ในเวลาทำงาน หากมีการประกาศตัวระบุเฉพาะvar
หนึ่งครั้งหรือมากกว่าในที่ใดก็ได้ในส่วนของฟังก์ชั่น (*) การใช้ตัวระบุนั้นในบล็อกทั้งหมดจะอ้างอิงถึงตัวแปรท้องถิ่น มันไม่ได้ทำให้ความแตกต่างไม่ว่าจะvalue
มีการประกาศว่าจะvar
อยู่ในวงนอกวงหรือทั้งสองอย่าง
ดังนั้นคุณควรเขียนสิ่งที่คุณเห็นว่าอ่านง่ายที่สุด ฉันไม่เห็นด้วยกับ Crockford ที่วาง vars ทั้งหมดที่ด้านบนของฟังก์ชั่นเป็นสิ่งที่ดีที่สุดเสมอ สำหรับกรณีที่มีการใช้ตัวแปรชั่วคราวในส่วนของรหัสจะเป็นการดีกว่าที่จะประกาศvar
ในส่วนนั้นดังนั้นส่วนจะยืนอยู่คนเดียวและสามารถคัดลอกวางได้ มิฉะนั้นให้คัดลอกวางโค้ดสองสามบรรทัดไปยังฟังก์ชันใหม่ในระหว่างการปรับโครงสร้างใหม่โดยไม่ต้องแยกออกจากกันและย้ายส่วนที่เกี่ยวข้องvar
และคุณได้ประสบอุบัติเหตุระดับโลก
โดยเฉพาะอย่างยิ่ง:
for (var i; i<100; i++)
do something;
for (var i; i<100; i++)
do something else;
Crockford จะแนะนำให้คุณลบอันที่สองvar
(หรือลบทั้งสองอย่างvar
และทำvar i;
ข้างบน) และ jslint จะเข้ามาหาคุณในเรื่องนี้ แต่ IMO จะรักษาได้ทั้งสองvar
s เก็บรหัสที่เกี่ยวข้องทั้งหมดไว้ด้วยกันแทนที่จะมีบิตพิเศษที่ถูกลืมได้ง่ายที่ด้านบนของฟังก์ชัน
โดยส่วนตัวแล้วฉันมักจะประกาศว่าvar
เป็นการกำหนดครั้งแรกของตัวแปรในส่วนที่เป็นอิสระของรหัสไม่ว่าจะมีการใช้งานที่แยกต่างหากของชื่อตัวแปรเดียวกันในส่วนอื่น ๆ ของฟังก์ชั่นเดียวกันหรือไม่ สำหรับฉันการประกาศvar
ทั้งหมดเป็นหูดที่ไม่พึงประสงค์ JS (มันจะดีกว่าที่จะมีตัวแปรเริ่มต้นเป็นท้องถิ่น); ฉันไม่เห็นว่าเป็นหน้าที่ของฉันที่จะทำซ้ำข้อ จำกัด ของ [การแก้ไขแบบเก่า] ANSI C ใน JavaScript เช่นกัน
(*: นอกเหนือจากในฟังก์ชั่นที่ซ้อนกัน)