मैंने इस जावास्क्रिप्ट कोड पर JSLint चलाया और यह कहा:
लाइन 32 की समस्या पर समस्या 30: मूलांक का पैरामीटर गुम होना।
यह प्रश्न में कोड है:
imageIndex = parseInt(id.substring(id.length - 1))-1;
यहाँ क्या गलत है?
मैंने इस जावास्क्रिप्ट कोड पर JSLint चलाया और यह कहा:
लाइन 32 की समस्या पर समस्या 30: मूलांक का पैरामीटर गुम होना।
यह प्रश्न में कोड है:
imageIndex = parseInt(id.substring(id.length - 1))-1;
यहाँ क्या गलत है?
जवाबों:
हमेशा parseInt के साथ मूलांक पास करने के लिए एक अच्छा अभ्यास है -
parseInt(string, radix)
दशमलव के लिए -
parseInt(id.substring(id.length - 1), 10)
यदि मूलांक पैरामीटर को छोड़ दिया जाता है, तो जावास्क्रिप्ट निम्नलिखित मानता है:
( संदर्भ )
Redundant radix parameter
radix
तर्क एक संख्यात्मक मान है, न कि संख्यात्मक मान का एक स्ट्रिंग प्रतिनिधित्व, इसलिए निर्दिष्ट करने के लिए कोई मूलांक नहीं है।
इस चेतावनी से बचने के लिए, उपयोग करने के बजाय:
parseInt("999", 10);
आप इसे इसके द्वारा प्रतिस्थापित कर सकते हैं:
Number("999");
ध्यान दें कि parseInt और संख्या में अलग-अलग व्यवहार हैं , लेकिन कुछ मामलों में, एक दूसरे को बदल सकता है।
Number()
6x की तुलना में तेज हैparseInt()
मैं इस सवाल का ठीक से जवाब नहीं दे रहा हूं, लेकिन मुझे लगता है कि इससे स्पष्ट होता है कि हमें मूलांक क्यों बताना चाहिए ।
MDN प्रलेखन पर हम पढ़ सकते हैं कि:
यदि मूलांक अपरिभाषित या 0 (या अनुपस्थित) है, तो जावास्क्रिप्ट निम्नलिखित मानता है:
स्रोत: MDN parseInt ()
यदि आप उस परीक्षण को छोड़ना चाहते हैं तो आप इस नियम को बंद कर सकते हैं।
सम्मिलित करें:
radix: false
फ़ाइल rules
में " " गुण के अंतर्गत tslint.json
।
यह करने की अनुशंसा नहीं की जाती है यदि आप इस अपवाद को नहीं समझते हैं।
अपने जेएस फ़ाइल के शीर्ष पर निम्नलिखित को जोड़ने से जेएसहिंट को मूलांक चेतावनी को दबाने के लिए कहा जाएगा:
/*jshint -W065 */
इसे भी देखें: http://jshint.com/docs/#options
"-W065": true
एक .jshintrc
फ़ाइल में उपयोग कर सकते हैं , जैसे ।
मैंने इसे स्ट्रिंग बदलने के लिए सिर्फ + फू का उपयोग करके हल किया।
ध्यान रखें कि यह पठनीयता (गंदे फिक्स) के लिए बहुत अच्छा नहीं है।
console.log( +'1' )
// 1 (int)
आप बस इस लाइन को अपने parseInt लाइन के ठीक ऊपर जोड़ सकते हैं:
// eslint-disable-next-line
यह अगली पंक्ति के लिए एस्लिंट चेक को अक्षम कर देगा। इसका उपयोग करें यदि आपको केवल एक या दो लाइनों को छोड़ना है।
बस एक खाली स्ट्रिंग को मूलांक स्थान में रखें, क्योंकि parseInt () दो तर्क देते हैं:
parseInt (स्ट्रिंग, मूलांक);
string करने का मान। यदि स्ट्रिंग तर्क एक स्ट्रिंग नहीं है, तो इसे एक स्ट्रिंग में बदल दिया जाता है (ToString अमूर्त ऑपरेशन का उपयोग करके)। स्ट्रिंग तर्क में प्रमुख व्हाट्सएप को अनदेखा किया जाता है।
मूलांक 2 और 36 के बीच एक पूर्णांक जो उपर्युक्त स्ट्रिंग के मूलांक (गणितीय अंक प्रणाली में आधार) का प्रतिनिधित्व करता है। आमतौर पर मनुष्यों द्वारा उपयोग किए जाने वाले दशमलव अंक प्रणाली के लिए 10 निर्दिष्ट करें। पाठक के भ्रम को खत्म करने और अनुमानित व्यवहार की गारंटी के लिए हमेशा इस पैरामीटर को निर्दिष्ट करें। जब एक मूलांक निर्दिष्ट नहीं किया जाता है, तो अलग-अलग कार्यान्वयन अलग-अलग परिणाम उत्पन्न करते हैं, आमतौर पर मान 10 तक डिफ़ॉल्ट होता है।
imageIndex = parseInt (id.substring (id.length - 1)) - 1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
बस अपने कस्टम नियम को .eslintrc में जोड़ें जो उस तरह दिखता है
"radix": "off"
और आप इस अनुरक्षण अनैन्सरी चेतावनी से मुक्त होंगे। यह एस्लिंट लिंटर के लिए है।
ECMAScript 5 से पहले, parseInt () ने भी ऑक्टोडेट किया हुआ ऑक्टल शाब्दिक, जिसके कारण समस्याएं पैदा हुईं क्योंकि कई डेवलपर्स ने माना कि एक अग्रणी 0 को अनदेखा किया जाएगा।
इसलिए इसके बजाय:
var num = parseInt("071"); // 57
यह करो:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);