আমি এই জাভাস্ক্রিপ্ট কোডটিতে জেএসলিন্ট চালিয়েছি এবং এটি বলেছে:
32 অক্ষরের 30 লাইনে সমস্যা: রেডিক্স প্যারামিটার হারিয়েছে Miss
এটি প্রশ্নের মধ্যে কোড:
imageIndex = parseInt(id.substring(id.length - 1))-1;
এখানে কি ভুল?
আমি এই জাভাস্ক্রিপ্ট কোডটিতে জেএসলিন্ট চালিয়েছি এবং এটি বলেছে:
32 অক্ষরের 30 লাইনে সমস্যা: রেডিক্স প্যারামিটার হারিয়েছে Miss
এটি প্রশ্নের মধ্যে কোড:
imageIndex = parseInt(id.substring(id.length - 1))-1;
এখানে কি ভুল?
উত্তর:
পার্সিয়ান্টের সাথে রডিক্স পাস করা সর্বদা একটি ভাল অনুশীলন -
parseInt(string, radix)
দশমিক জন্য -
parseInt(id.substring(id.length - 1), 10)
যদি র্যাডিক্স প্যারামিটার বাদ দেওয়া থাকে তবে জাভাস্ক্রিপ্ট নিম্নলিখিতটি ধরে নেয়:
( রেফারেন্স )
Redundant radix parameter
radix
আর্গুমেন্টটি একটি সংখ্যাসূচক মান, একটি সংখ্যার মানের স্ট্রিং প্রতিনিধিত্ব নয়, সুতরাং নির্দিষ্ট করার জন্য কোনও রেডিক্স নেই।
এই সতর্কতাটি এড়াতে, ব্যবহারের পরিবর্তে:
parseInt("999", 10);
আপনি এটি দ্বারা প্রতিস্থাপন করতে পারেন:
Number("999");
নোট করুন যে পার্সিয়ান্ট এবং সংখ্যাগুলির আলাদা আচরণ রয়েছে , তবে কিছু ক্ষেত্রে, একজন অন্যটিকে প্রতিস্থাপন করতে পারে।
parseInt
এবং Number
। এখানে একটি পুরানো পারফরম্যান্স পরীক্ষা রয়েছে ।
Number()
6x এর চেয়ে দ্রুতparseInt()
আমি প্রশ্নের যথাযথভাবে উত্তর দিচ্ছি না তবে, আমি মনে করি কেন আমাদের মূলসূত্রটি নির্দিষ্ট করা উচিত তা পরিষ্কার করে বোঝা উচিত ।
এমডিএন ডকুমেন্টেশনে আমরা এটি পড়তে পারি:
যদি রেডিক্স অপরিজ্ঞাত বা 0 (বা অনুপস্থিত) থাকে তবে জাভাস্ক্রিপ্ট নিম্নলিখিতটি ধরে নেয়:
সূত্র: MDN parseInt ()
আপনি যদি এই পরীক্ষাটি বাদ দিতে চান তবে আপনি এই নিয়মটি বন্ধ করতে পারেন।
প্রবেশ করান:
radix: false
ফাইলটিতে " rules
" সম্পত্তি অধীনে tslint.json
।
আপনি যদি এই ব্যতিক্রমটি না বুঝতে পারেন তবে এটি করার পরামর্শ দেওয়া হয় না।
আপনার জেএস ফাইলের উপরে নিম্নলিখিতটি যুক্ত করা জেএসএইচিন্টকে মূল সূত্রের সতর্কতা দমন করতে বলবে:
/*jshint -W065 */
আরও দেখুন: http://jshint.com/docs/#options
"-W065": true
যেমন একটি .jshintrc
ফাইল ব্যবহার করতে পারেন ।
আমি স্ট্রিং রূপান্তর করতে, এটি কেবল + foo ব্যবহার করে সমাধান করেছি।
মনে রাখবেন এটি পঠনযোগ্যতার জন্য দুর্দান্ত নয় (নোংরা ফিক্স)।
console.log( +'1' )
// 1 (int)
আপনি নিজের পার্সেন্ট লাইনের ঠিক উপরে এই লাইনটি কেবল যুক্ত করতে পারেন:
// eslint-disable-next-line
এটি পরবর্তী লাইনের জন্য এসলিন্ট চেক অক্ষম করবে। আপনার যদি কেবল এক বা দুটি লাইন বাদ দিতে হয় তবে এটি ব্যবহার করুন।
কেবল র্যাডিক্সের জায়গায় একটি খালি স্ট্রিং রাখুন, কারণ পার্সইন্ট () দুটি আর্গুমেন্ট নেয়:
parseInt (স্ট্রিং, রেডিক্স);
স্ট্রিংটি পার্স করার মান। যদি স্ট্রিং আর্গুমেন্টটি স্ট্রিং না হয়, তবে এটি স্ট্রিংয়ে রূপান্তরিত হয় (টোস্ট্রিং বিমূর্ত ক্রিয়া ব্যবহার করে)) স্ট্রিং আর্গুমেন্টে শীর্ষস্থানীয় সাদা স্থান উপেক্ষা করা হবে।
রেডিক্স 2 এবং 36 এর মধ্যে একটি পূর্ণসংখ্যা যা উপরে বর্ণিত স্ট্রিংয়ের মূলগুলি (গাণিতিক সংখ্যাগুলিতে ভিত্তি) উপস্থাপন করে। দশমিক সংখ্যা ব্যবস্থার জন্য মানুষ সাধারণত ব্যবহৃত হয় 10 টি নির্দিষ্ট করুন। পাঠকের বিভ্রান্তি দূর করতে এবং পূর্বাভাসযোগ্য আচরণের গ্যারান্টি দিতে সর্বদা এই পরামিতিটি নির্দিষ্ট করুন। সাধারণত কোনও মানকে 10 এ ডিফল্ট করে যখন কোনও রেডিক্স নির্দিষ্ট না করা হয় তখন বিভিন্ন বাস্তবায়ন বিভিন্ন ফলাফল দেয়।
imageIndex = parseInt (id.substring (id.length - 1)) - 1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
কেবলমাত্র .eslintrc এ আপনার কাস্টম নিয়ম যুক্ত করুন যা দেখতে দেখতে
"radix": "off"
আর আপনি এই এসিলিন্টের অনিরোধক সতর্কতা থেকে মুক্ত হবেন। এটি এসলিন্ট লাইনারের জন্য।
ইসমাস্ক্রিপ্ট ৫ এর পূর্বে পার্সেন্ট () অষ্টাল লিটারালগুলিও স্বয়ংক্রিয়রূপে নিয়েছিল, যার ফলে সমস্যা দেখা দিয়েছে কারণ অনেক বিকাশকারী একটি অগ্রণী 0 অবহেলিত বলে ধরে নিয়েছেন।
সুতরাং পরিবর্তে:
var num = parseInt("071"); // 57
এটা কর:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);
পরিবর্তে substring
ফাংশনটি কল করতে আপনি ব্যবহার করতে পারেন.slice()
imageIndex = parseInt(id.slice(-1)) - 1;
এখানে, স্লাইসে -1 নির্দেশ করে যে শেষ সূচী থেকে স্লাইস শুরু করতে।
ধন্যবাদ।