ฉันมักจะเห็นรหัส JavaScript ซึ่งตรวจสอบพารามิเตอร์ที่ไม่ได้กำหนด ฯลฯ ด้วยวิธีนี้:
if (typeof input !== "undefined") {
// do stuff
}
ดูเหมือนว่าสิ้นเปลืองเนื่องจากเกี่ยวข้องกับการค้นหาทั้งประเภทและการเปรียบเทียบสตริงไม่ต้องพูดถึงคำฟุ่มเฟื่อย มันจำเป็นเพราะundefined
สามารถเปลี่ยนชื่อได้
คำถามของฉันคือ:
รหัสนั้นดีกว่าวิธีนี้ได้อย่างไร:
if (null != input) {
// do stuff
}
เท่าที่ฉันรู้คุณไม่สามารถกำหนดใหม่null
ดังนั้นมันจะไม่ผิดพลาดอย่างกะทันหัน และเนื่องจากการขู่เข็ญชนิดของ!=
โอเปอเรเตอร์การตรวจสอบนี้สำหรับทั้งสองundefined
และnull
... ซึ่งมักจะเป็นสิ่งที่คุณต้องการอย่างแน่นอน (เช่นสำหรับพารามิเตอร์ฟังก์ชั่นเสริม)
ทว่ารูปแบบนี้ยังไม่แพร่หลายและทำให้ JSLint ตะโกนใส่คุณเพื่อใช้ตัว!=
ดำเนินการร้าย
ทำไมสิ่งนี้จึงถือว่าเป็นรูปแบบที่ไม่ดี
if (null != input)
เป็นเพียง "โยดาพูด" กับผู้พูดภาษาอังกฤษ (หนึ่งในฉันคือ .... uuammmmm) ดังนั้นหากพวกเขาถือเอาสิ่งเดียวกันมันเป็นความหมายจริงๆ IMHO