জেভাস্ক্রিপ্ট শ্রেষ্ঠ প্রথা
- পূর্ববর্তী পৃষ্ঠা জেএস স্টাইল গাইড
- পরবর্তী পৃষ্ঠা জেএস ত্রুটি
গ্লোবাল ভেক্টর থেকে বিরত হওয়াnew
、===
、eval()
গ্লোবাল ভেক্টর থেকে বিরত হওয়া
গ্লোবাল ভেক্টর ব্যবহার করতে হবে যতটা সম্ভব কম
এটা সব ধরণের ডাটা টাইপ, অবজেক্ট এবং ফাংশনকে অন্তর্ভুক্ত করে
গ্লোবাল ভেক্টর এবং ফাংশনকে অন্য স্ক্রিপ্ট দ্বারা অবরূপণ করা যেতে পারে
স্থানীয় ভেক্টর ব্যবহার করে, এবং কিভাবে ব্যবহার করা যায় শিখুনক্লোজার。
স্থানীয় ভেক্টর ঘোষণা করুন
ফাংশনের মধ্যে ব্যবহৃত সব ভেক্টরকে ঘোষণা করা উচিতস্থানীয়ভেক্টর
স্থানীয় ভেক্টরঅত্যন্তদ্বারা var ঘোষণা করার জন্য কীওয়ার্ড ব্যবহার করুন, না তবে তা গ্লোবাল ভেক্টর হবে
সংক্রান্ত মোড়টিতে ঘোষণা না করলে তা গ্লোবাল ভেক্টর হয়
শীর্ষে ঘোষণা
একটি ভালো কোডিং অভ্যাস হল সব স্ক্রিপ্ট এবং ফাংশনের শীর্ষে সব ঘোষণা করা
এই কাজের ফলে একটি উপকারী হল:
- সবচেয়ে সুন্দর কোড পাওয়া
- স্থানীয় ভেক্টর খুঁজে পাওয়ার ভালো স্থান
- অপ্রয়োজনীয় গ্লোবাল ভেক্টর থেকে সহজভাবে বিরত হতে পারে
- অপ্রয়োজনীয় পুনরায় ঘোষণার সম্ভাবনা হ্রাস করা
// শীর্ষে ঘোষণা var firstName, lastName, price, discount, fullPrice; // পরে ব্যবহার করা হবে firstName = "Bill"; lastName = "Gates"; price = 19.90; discount = 0.10; fullPrice = price * 100 / discount;
এটা গলোকপোস্টিং বলেও ব্যবহার করা যেতে পারে:
// শীর্ষে ঘোষণা var i; // পরে ব্যবহার করা হবে for (i = 0; i < 5; i++) {
ডিফল্টভাবে, JavaScript সব ঘোষণা শীর্ষে স্থানান্তর করে (JavaScript hoisting)।
প্রথমে বিন্যাস
ভেক্টরকে ঘোষণা করার সময় তাকে ইনিশালাইজেশন করা একটি ভালো অভ্যাস
এই কাজের ফলে একটি উপকারী হল:
- আরও সাফল কোড
- ভেক্টরকে একল স্থানে ইনিশালাইজেশন
- অসংজ্ঞী মূল্যকে একল স্থানে বাধ্যতামূলকভাবে ইনিশালাইজেশন
// শুরুতে ঘোষণা এবং ইনিশালাইজেশন var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
ভেক্টর ইনিশালাইজেশন আমাদেরকে প্রত্যাশিত ব্যবহার এবং প্রত্যাশিত ডাটা টাইপ বুঝতে সাহায্য করে
নম্বর, স্ট্রিং বা বলীনা অবজেক্ট ঘোষণা করবেন না
সবসময় নম্বর, স্ট্রিং বা বলীনা কে প্রকল্প হিসাবে দেখুন, নট অবজেক্ট
এগুলোকে অবজেক্ট হিসাবে ঘোষণা করলে, এটা কার্যকরী গতি ধীর করতে পারে এবং নষ্টকারী প্রভাব সৃষ্টি করতে পারে:
ইনস্ট্যান্স
var x = "Bill"; var y = new String("Bill"); (x === y) // ফলাফল false, কারণ x একটি স্ট্রিং এবং y একটি অবজেক্ট
বা এতটাই খারাপ:
ইনস্ট্যান্স
var x = new String("Bill"); var y = new String("Bill"); (x == y) // ফলাফল false, কারণ আপনি অবজেক্টকে তুলনা করতে পারেন না。
new Object() ব্যবহার করবেন না
- অবশ্যই {} ব্যবহার করুন new Object() এর পরিবর্তে
- অবশ্যই "" ব্যবহার করুন new String() এর পরিবর্তে
- অবশ্যই 0 ব্যবহার করুন new Number() এর পরিবর্তে
- অবশ্যই false ব্যবহার করুন new Boolean() এর পরিবর্তে
- অবশ্যই [] ব্যবহার করুন new Array() এর পরিবর্তে
- অবশ্যই /()/ ব্যবহার করুন new RegExp() এর পরিবর্তে
- অবশ্যই function (){} ব্যবহার করুন new Function() এর পরিবর্তে
ইনস্ট্যান্স
var x1 = {}; // নতুন অবজেক্ট var x2 = ""; // নতুন প্রকল্প স্ট্রিং var x3 = 0; // নতুন প্রকল্প নাম্বর var x4 = false; // নতুন প্রকল্প বলীনা var x5 = []; // নতুন আর্রেই অবজেক্ট var x6 = /()/; // নতুন রেগুলার এক্সপ্রেশন var x7 = function(){}; // নতুন ফাংশন অবজেক্ট
স্বয়ংক্রিয় টাইপ রূপান্তর সম্পর্কে সচেতন হওয়া
আপনাকে উপলব্ধি করুন যে নম্বরগুলি অপসারণকৃতভাবে স্ট্রিং হিসাবে রূপান্তরিত হতে পারে বা NaN
(নট এ নাম্বার)
জেভাস্ক্রিপ্ট একটি মুক্ত টাইপ। ভেক্টর বিভিন্ন ডাটা টাইপ ধারণ করতে পারে এবং ভেক্টর তার ডাটা টাইপ পরিবর্তন করতে পারে:
ইনস্ট্যান্স
var x = "Hello"; // typeof x হবে শব্দসূচী x = 5; // typeof x-কে সংখ্যা হিসাবে পরিবর্তন করুন
যদি গণিতীয় ক্রিয়া করা হয়, JavaScript মানকে শব্দসূচীতে রূপান্তর করতে পারে:
ইনস্ট্যান্স
var x = 5 + 7; // x.valueOf() হবে 12, typeof x হবে সংখ্যা var x = 5 + "7"; // x.valueOf() হবে 57, typeof x হবে শব্দসূচী var x = "5" + 7; // x.valueOf() হবে 57, typeof x হবে শব্দসূচী var x = 5 - 7; // x.valueOf() হবে -2, typeof x হবে সংখ্যা var x = 5 - "7"; // x.valueOf() হবে -2, typeof x হবে সংখ্যা var x = "5" - 7; // x.valueOf() হবে -2, typeof x হবে সংখ্যা var x = 5 - "x"; // x.valueOf() হবে NaN, typeof x হবে সংখ্যা
শব্দসূচী থেকে শব্দসূচী কমানো, ত্রুটি হবে না এবং ফলাফল হবে NaN
(Not a Number):
ইনস্ট্যান্স
"Hello" - "Dolly" // ফলাফল NaN
=== তুলনা করতে ব্যবহার করুন
==
তুলনা অপারেটরটি তুলনার আগেই ধরন পরিবর্তন করে (ধরনকে মাথায় রাখতে)
===
অপারেটরটি মান এবং ধরনকে বাধ্যতামূলকভাবে তুলনা করবে:
ইনস্ট্যান্স
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
Parameter Defaults
যদি ফাংশনটিকে বাউন্ডারীতে একটি প্রমাণীকানা অপসারণ করা হয়, তবে এই অপসারিত প্রমাণীকানার মান সেট করা হবে undefined
。
undefined
মান আপনার কোডটিকে ভেঙ্গে দিতে পারে। প্রমাণীকানা ডিফল্ট মান সজ্জাকরণ একটি ভালো অভ্যাস।
ইনস্ট্যান্স
function myFunction(x, y) { if (y === undefined) { y = 0; } }
অবশ্যইফাংশন প্যারামিটারএই চাপ্তীতে আরও বেশি তথ্য পড়ুন
default দিয়ে switch শেষ করুন
অবশ্যই default
এবং আপনার switch
বাক্যটি আপনি এই প্রয়োজন না মনে করুন
ইনস্ট্যান্স
switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; default: day = "Unknown"; }
eval() ব্যবহার না করুন
eval()
ফাংশনটি টেক্সটকে কোড হিসাবে অনুমতি দেয়।সবচেয়ে বেশিরভাগ ক্ষেত্রে, এটা ব্যবহার করা হয় না
কোনও কোড চালু করার অনুমতি দেওয়ার কারণে, এটি একইসঙ্গে নিরাপত্তা সমস্যাও হয়
- পূর্ববর্তী পৃষ্ঠা জেএস স্টাইল গাইড
- পরবর্তী পৃষ্ঠা জেএস ত্রুটি