मैं अक्सर जावास्क्रिप्ट कोड देखता हूं जो अपरिभाषित मापदंडों आदि की जांच करता है।
if (typeof input !== "undefined") {
// do stuff
}
यह एक तरह से बेकार लगता है, क्योंकि इसमें एक प्रकार का लुकअप और एक स्ट्रिंग तुलना दोनों शामिल हैं, न कि इसकी वाचालता का उल्लेख करने के लिए। यह आवश्यक है क्योंकि undefinedइसका नाम बदला जा सकता है, हालांकि।
मेरा प्रश्न है:
यह कोड इस दृष्टिकोण से कैसे बेहतर है:
if (null != input) {
// do stuff
}
जहाँ तक मुझे पता है, आप फिर से परिभाषित नहीं कर सकते null, तो यह अप्रत्याशित रूप से टूटने वाला नहीं है। और, !=ऑपरेटर के प्रकार-ज़बरदस्ती के कारण , यह दोनों के लिए जाँच करता है undefinedऔर null... जो अक्सर वही होता है जो आप चाहते हैं (जैसे वैकल्पिक फ़ंक्शन मापदंडों के लिए)।
फिर भी यह रूप व्यापक नहीं लगता है, और यह JSLint को आपके द्वारा दुष्ट !=ऑपरेटर का उपयोग करने के लिए चिल्लाता है ।
क्यों इसे खराब शैली माना जाता है?
if (null != input)अंग्रेजी बोलने वाले के लिए केवल "योडा स्पीक" (एक मैं .... उउउम्म्म्मम) है, इसलिए यदि वे एक ही चीज की बराबरी करते हैं तो यह वास्तव में सिर्फ शब्दार्थ है। IMHO।