A e-commerce storefront built using the Fake Store API.
জাভাস্ক্রিপ্টে এই দুইটার পার্থক্য হল:
১. Undefined: ভেরিয়েবল ডিক্লেয়ার করা হয়েছে কিন্তু কোনো ভ্যালু অ্যাসাইন করা হয়নি। এটা ডিফল্ট অবস্থা। মেমোরিতে জায়গা আছে, কিন্তু ভেতরে কী আছে তা অজানা।
২. Null: এটা ইচ্ছাকৃতভাবে সেট করা হয়। ভেরিয়েবলটি যে খালি বা সেখানে কোনো অবজেক্ট নেই, তা বোঝানোর জন্য প্রোগ্রামার নিজে এটি ব্যবহার করে।
১. map() একটা নতুন অ্যারে তৈরি করে। অরিজিনাল অ্যারের প্রতিটি উপাদানের ওপর কোনো নির্দিষ্ট কাজ (Function) চালিয়ে সেই রেজাল্ট দিয়ে একটি নতুন অ্যারে রিটার্ন করে। অরিজিনাল অ্যারে অপরিবর্তিত থাকে।
২. forEach() কেবল অ্যারের প্রতিটি উপাদানের ওপর লুপ চালায়। এটা কোনো নতুন অ্যারে রিটার্ন করে না।
জাভাস্ক্রিপ্টে এই দুই অপারেটরের প্রধান পার্থক্য হলো তারা কীভাবে ডেটা টাইপ চেক করে।
১. == (Loose Equality): এটা শুধুমাত্র ভ্যালু বা মান সমান কি না তা পরীক্ষা করে। যদি দুই পাশের ডেটা টাইপ আলাদা হয়, তবে এটা নিজে থেকেই টাইপ কনভার্ট করে মিলিয়ে দেখার চেষ্টা করে।
২. === (Strict Equality): এটা ভ্যালু এবং ডেটা টাইপ উভয়ই সমান কি না তা পরীক্ষা করে। কোনো অটোমেটিক টাইপ কনভার্সন এখানে হয় না। এটি অনেক বেশি নিরাপদ এবং নির্ভুল।
জাভাস্ক্রিপ্টে async/await ব্যবহারের মূল গুরুত্ব হলো এসিনক্রোনাস (Asynchronous) কোডকে সিনক্রোনাস বা সাধারণ কোডের মতো সহজবোধ্য করা। এটা প্রমিজ (Promise) হ্যান্ডেল করার একটি আধুনিক পদ্ধতি। এতে কোড পড়তে সুবিধা হয় এবং দেখতেও গোছানো লাগে। এপিআই থেকে রেসপন্স না আসা পর্যন্ত await কি-ওয়ার্ড পরবর্তী লাইনের এক্সিকিউশন থামিয়ে রাখে। ফলে ডেটা আসার আগেই অন্য ফাংশন রান হওয়ার ভয় থাকে না।
ভেরিয়েবলের অ্যাক্সেস করার ক্ষমতাকেই Scope বলে।
১. Global Scope: কোডের একেবারে শুরুতে বা যেকোনো ফাংশনের বাইরে সবজায়গায় কাজ করে। পুরো প্রোগ্রামের যেকোনো জায়গা থেকে ব্যবহার করা যায়।
২. Function Scope: শুধুমাত্র একটি ফাংশনের ভেতরে কাজ করে। ফাংশনের বাইরে এটা কাজ করে না। (var, let, const সবার জন্য প্রযোজ্য)
৩. Block Scope কার্লি ব্রেসেস { } বা লুপ/কন্ডিশনের ভেতরে কাজ করে। শুধু ওই ব্লকের ভেতরেই সীমাবদ্ধ। (শুধুমাত্র let এবং const এর জন্য)