সাধারণ জাভাস্ক্রিপ্ট ভুল
এই অধ্যায় কিছু সাধারণ জাভাস্ক্রিপ্ট ভুল নির্দেশ করে.
গুরুত্বপূর্ণ:
এই সাধারণ ভুলগুলি জানা এবং এড়ানো আপনার জাভাস্ক্রিপ্ট কোডের গুণমান উন্নত করবে।
র্যান্ডম অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে
যদি একজন প্রোগ্রামার ঘটনাক্রমে একটি if স্টেটমেন্টে তুলনা অপারেটর (=) এর পরিবর্তে একটি অ্যাসাইনমেন্ট অপারেটর (=) ব্যবহার করে, জাভাস্ক্রিপ্ট প্রোগ্রামগুলি অপ্রত্যাশিত ফলাফল আনতে পারে।
এটি যদি বিবৃতি মিথ্যা (প্রত্যাশিত হিসাবে) প্রদান করে কারণ x 10 এর সমান নয়:
let x = 0;
if (x == 10)
এটি যদি বিবৃতিটি সত্য হয় (যা আশা করা যায় না) কারণ 10 সত্য:
let x = 0;
if (x = 10)
এটি যদি বিবৃতি মিথ্যা প্রদান করে (যা প্রত্যাশিত নাও হতে পারে) কারণ 0 মিথ্যা:
let x = 0;
if (x = 0)
একটি অ্যাসাইনমেন্ট সবসময় অ্যাসাইনমেন্টের মান প্রদান করে।
একটি আলগা তুলনা আশা করছি
নিয়মিত তুলনাতে, ডেটা টাইপ কোন ব্যাপার না। এটি যদি বিবৃতিটি সত্য হয়:
let x = 10;
let y = "10";
if (x == y)
একটি কঠোর তুলনাতে, ডেটা টাইপ গুরুত্বপূর্ণ। এটি যদি বিবৃতি মিথ্যা ফেরত দেয়:
let x = 10;
let y = "10";
if (x === y)
একটি সাধারণ ভুল হল ভুলে যাওয়া যে সুইচ বিবৃতিগুলি কঠোর তুলনা ব্যবহার করে:
এই কেস সুইচ একটি সতর্কতা প্রদর্শন করবে:
let x = 10;
switch(x) {
case 10: alert("Hello");
}
এই কেস সুইচ একটি সতর্কতা প্রদর্শন করে না:
let x = 10;
switch(x) {
case "10": alert("Hello");
}
যোগ এবং সংযোগের বিভ্রান্তি
যোগ হল সংখ্যা যোগ করা সম্পর্কে।
সংমিশ্রণ সব স্ট্রিং যোগ সম্পর্কে.
জাভাস্ক্রিপ্টের উভয় ফাংশন একই + অপারেটর ব্যবহার করে।
এই কারণে, একটি সংখ্যার সাথে একটি সংখ্যা যোগ করা একটি স্ট্রিংয়ে একটি সংখ্যা যোগ করার চেয়ে ভিন্ন ফলাফল দেবে:
যাক x = 10; x = 10 + 5; // এখন x 15 যাক y = 10; y += "5"; // এখন y হল "105"
যখন দুটি ভেরিয়েবল যোগ করা হয়, ফলাফল ভবিষ্যদ্বাণী করা কঠিন হতে পারে:
যাক x = 10; যাক y = 5; যাক z = x + y; // এখন z হল 15 যাক x = 10; let y = "5"; যাক z = x + y; // এখন z হল "105"
ফ্লোটিং পয়েন্ট সংখ্যার ভুল বোঝাবুঝি
জাভাস্ক্রিপ্টের সমস্ত সংখ্যা 64-বিট ফ্লোটিং পয়েন্ট সংখ্যা (ফ্লোট) হিসাবে সংরক্ষণ করা হয়।
জাভাস্ক্রিপ্ট সহ সমস্ত প্রোগ্রামিং ল্যাঙ্গুয়েজের স্পষ্টতা ফ্লোটিং পয়েন্ট মানগুলির সাথে অসুবিধা রয়েছে:
যাক x = 0.1; যাক y = 0.2; let z = x + y // z এর ফলাফল 0.3 হবে না
গুণ এবং ভাগ উপরের সমস্যা সমাধানে সাহায্য করে:
উদাহরণ
let z = (x * 10 + y * 10) / 10; // z হবে 0.3
একটি জাভাস্ক্রিপ্ট স্ট্রিং ভাঙা
জাভাস্ক্রিপ্ট আপনাকে একটি বিবৃতিকে দুটি লাইনে ভাঙতে দেয়:
উদাহরণ 1
let x =
"Hello World!";
কিন্তু একটি স্ট্রিংয়ের মাঝখানে একটি বিবৃতি ভাঙ্গা কাজ করে না:
উদাহরণ 2
let x = "Hello
World!";
যদি আপনি একটি স্ট্রিং মধ্যে একটি বিবৃতি ভাঙ্গা প্রয়োজন, "ব্যাকস্ল্যাশ" ব্যবহার করুন:
উদাহরণ 3
let x = "Hello \
World!";
সেমিকোলনকে ভুলভাবে প্রতিস্থাপন করা হচ্ছে
ভুল স্থানান্তরিত সেমিকোলনের কারণে, x এর মান নির্বিশেষে কোডের এই ব্লকটি কার্যকর করবে:
if (x == 19);
{
// code block
}
রিটার্ন বিবৃতি ভঙ্গ
একটি লাইনের শেষে একটি বিবৃতি স্বয়ংক্রিয়ভাবে বন্ধ করা একটি ডিফল্ট জাভাস্ক্রিপ্ট আচরণ।
এই কারণে, এই উভয় উদাহরণ একই ফলাফল দেয়:
উদাহরণ 1
function myFunction(a) {
let power = 10
return a * power
}
উদাহরণ 2
function myFunction(a) {
let power = 10;
return a * power;
}
জাভাস্ক্রিপ্ট আপনাকে একটি বিবৃতিকে দুটি লাইনে ভাঙ্গার অনুমতি দেয়।
এই কারণে, উদাহরণ 3 একই ফলাফল প্রদান করে:
উদাহরণ 3
function myFunction(a) {
let
power = 10;
return a * power;
}
কিন্তু আপনি যদি রিটার্ন স্টেটমেন্টটিকে এভাবে দুটি লাইনে ভেঙ্গে দেন তাহলে কি হবে:
উদাহরণ 4
function myFunction(a) {
let
power = 10;
return
a * power;
}
ফাংশন অনির্ধারিত রিটার্ন!
কেন? কারণ জাভাস্ক্রিপ্ট ভেবেছিল আপনি এটি চিহ্নিত করেছেন:
উদাহরণ 5
function myFunction(a) {
let
power = 10;
return;
a * power;
}
ব্যাখ্যা
যদি একটি রিপোর্ট অসম্পূর্ণ হয়:
let
জাভাস্ক্রিপ্ট পরবর্তী লাইন পড়ে বিবৃতিটি সম্পূর্ণ করার চেষ্টা করবে:
power = 10;
কিন্তু যেহেতু এই বিবৃতিটি সম্পূর্ণ:
return
জাভাস্ক্রিপ্ট এটি স্বয়ংক্রিয়ভাবে বন্ধ করে:
return;
এটি ঘটে কারণ জাভাস্ক্রিপ্টে একটি সেমিকোলন সহ বিবৃতি বন্ধ করা (সমাপ্ত করা) ঐচ্ছিক।
জাভাস্ক্রিপ্ট লাইনের শেষে রিটার্ন স্টেটমেন্ট গুটিয়ে রাখে কারণ এটি একটি সম্পূর্ণ বিবৃতি।
রিটার্ন স্টেটমেন্ট কখনো ভাঙ্গবেন না।
নামযুক্ত সূচী সহ অ্যারে অ্যাক্সেস করা
অনেক প্রোগ্রামিং ভাষা নামযুক্ত চিহ্ন সহ অ্যারে সমর্থন করে।
নামযুক্ত সূচী সহ অ্যারেগুলিকে অ্যাসোসিয়েটিভ অ্যারে (বা হ্যাশ) বলা হয়।
জাভাস্ক্রিপ্ট নামযুক্ত চিহ্ন সহ অ্যারে সমর্থন করে না।
জাভাস্ক্রিপ্টে, অ্যারে সংখ্যাযুক্ত চিহ্ন ব্যবহার করে:
উদাহরণ
const person = []; person[0] = "জন"; person[1] = "করুন"; ব্যক্তি [২] = ৪৬; person.length; // রিটার্ন person.length 3 ব্যক্তি [0]; // ব্যক্তি[0] "জন" ফেরত দেয়।
জাভাস্ক্রিপ্টে, অবজেক্ট নামযুক্ত চিহ্ন ব্যবহার করে।
আপনি যদি একটি নামযুক্ত সূচক ব্যবহার করেন, একটি অ্যারে অ্যাক্সেস করার সময়, JavaScript অ্যারেটিকে একটি স্ট্যাটিক অবজেক্ট হিসাবে পুনরায় সংজ্ঞায়িত করে।
স্বয়ংক্রিয় পুনর্নির্ধারণের পরে, অ্যারে পদ্ধতি এবং বৈশিষ্ট্যগুলি অনির্ধারিত বা মিথ্যা ফলাফল তৈরি করে:
উদাহরণ:
const person = []; person["firstName"] = "জন"; person["lastName"] = "করুন"; ব্যক্তি ["বয়স"] = 46; person.length; // person.length 0 প্রদান করে ব্যক্তি [0]; // ব্যক্তি[0] অনির্ধারিত ফেরত দেয়
কমা দিয়ে সংজ্ঞা শেষ করা হচ্ছে
অবজেক্ট এবং অ্যারে সংজ্ঞায় ট্রেলিং কমাগুলি ECMAScript 5-এ বৈধ।
উপাদান উদাহরণ:
person = {firstName:"John", lastName:"Doe", age:46,}
ক্রম উদাহরণ:
points = [40, 100, 1, 5, 25, 10,];
সতর্কতা!!
ইন্টারনেট এক্সপ্লোরার 8 ক্র্যাশ।
JSON ট্রেলিং কমা অনুমোদন করে না।
JSON:
person = {"firstName":"John", "lastName":"Doe", "age":46}
JSON:
points = [40, 100, 1, 5, 25, 10];
অনির্ধারিত শূন্য নয়
জাভাস্ক্রিপ্ট অবজেক্ট, ভেরিয়েবল, বৈশিষ্ট্য এবং পদ্ধতিগুলি অনির্ধারিত হতে পারে।
অতিরিক্তভাবে, খালি জাভাস্ক্রিপ্ট বস্তুর একটি শূন্য মান থাকতে পারে।
এটি একটি বস্তু খালি আছে কিনা তা পরীক্ষা করা আরও কঠিন করে তোলে।
ধরনটি অনির্ধারিত কিনা তা পরীক্ষা করে আপনি একটি বস্তু বিদ্যমান কিনা তা পরীক্ষা করতে পারেন:
উদাহরণ:
if (typeof myObj === "undefined")
কিন্তু আপনি একটি বস্তু শূন্য কিনা তা পরীক্ষা করতে পারবেন না কারণ এটি একটি ত্রুটি নিক্ষেপ করে যদি বস্তুটি অনির্ধারিত থাকে:
ভুল:
if (myObj === null)
এই সমস্যাটি সমাধান করার জন্য, আমাদের পরীক্ষা করতে হবে যে একটি বস্তু নাল নয় এবং অনির্ধারিত নয়।
কিন্তু এটি এখনও একটি ত্রুটি নিক্ষেপ করতে পারে:
ভুল:
if (myObj !== null && typeof myObj !== "undefined")
এই কারণে, আপনি not null চেক করার আগে আপনার অনির্ধারিত নয় চেক করা উচিত:
সঠিক:
if (typeof myObj !== "undefined" && myObj !== null)
জাভাস্ক্রিপ্ট সাধারণ ভুল টিউটোরিয়াল
এই টিউটোরিয়ালটি আপনাকে সাধারণ জাভাস্ক্রিপ্ট ভুল সম্পর্কে আপনার জ্ঞান পরীক্ষা করতে সাহায্য করবে।