Module‌‌‌ ‌‌‌৩৪ ‌‌‌এ‌‌‌ ‌‌‌আমরা‌‌‌ ‌‌‌যাকিছু‌‌‌ ‌‌‌শিখেছি‌‌‌

Module‌‌‌ ‌‌‌৩৪ ‌‌‌এ‌‌‌ ‌‌‌আমরা‌‌‌ ‌‌‌যাকিছু‌‌‌ ‌‌‌শিখেছি‌‌‌

Javascript Tricky concepts

 

 

  • Javascript is a dynamic data type . কেমন JS কে variable ডিকলার করার সময় বলে দিতে হয় না এটা কোণ ধরনের ডাটা (নাম্বার ,স্ট্রিং না বুলিয়ান ) সে তার ডান পাশের ভেলু দেখে বুঝে নিতে পারে । থিস JS একটি dynamic data type

  • typeOf এর কাজ কি ?

  • data type

 

Primitive data type

  1. Number

  2. String

  3. Boolean

  4. Undefined

  5. Null

  6. Symbol

 

let a = "hello";

let b = a;

console.log(a, b);

a = "gello";

console.log(a, b);

 

  • আমরা এখানে কিন্তু  দ্বিতীয়বার a এর ভেলু চেঞ্জ করেছি । কিন্তু যদি প্রথম console.log(a,b) এর দিকে খেয়াল করি তাহলে দেখা যাবে hello,hello আছে এবং দ্বিতীয় console.log(a,b) তে দেখলে দেখা যাবে gello, hello আসবে । এর  প্রধান কারণ হচ্ছে primitive ডাটা তার reference কে সেভ করে রাখে না । primitive data is immutable


Non-primitive data type

 

  1. Object type Array ও Object এগুলো object type ডাটা টাইপ

 

let a = { job: "web developer" };

let b = a;

console.log(a, b);

a.job = "front end developer";

console.log(a, b);

 

  • এখানে প্রথম console.log(a,b)web developer web developer দেখাবে এটাই স্বাভাবিক । কিন্তু যখন আমরা a এর ডাটা আপডেট করলাম এবং console.log(a,b) করলাম তখন কি ঘটবে ? front end developer front end developer কিন্তু কেন ? return  আসার কথা ছিল web developer front end developer . এটা আসার কারণ একটাই । এটা একটা non-primitive ডাটা । তাই সে reference ধরে রাখে । এবং সব যায়গায় ডাটা আপডেট করে দেয় ।

 

 

  • Truthy and falsy

 

Truthy

  1. True

  2. Any number (negative or positive) without 0

  3. Any String without empty string

  4. [] empty Array

  5. {} empty Object

 

Falsy

  1. Flase

  2. Zeero ( 0 )

  3. Empty string

  4. Null

  5. NaN


const x = "এখানে ভেলু বসায়ে দেখো";

if (x) {

  console.log("variable is truthy");

} else {

  console.log("variable is falsy");

}

 

 

  • Undefined and null

 

Undefined

 

  1. Value not defined or assign

  2. ফাংশনে return না করলে

  3. Return লিখেছি কিন্তু কিছু return করিনি

  4. Function এর সকল Parameter না দিয়ে রেজাল্ট পেতে চাইলে

  5. Object এর কোণ property অবজেক্ট এর মধ্যে না থাকলে তাকে রেজাল্ট হিসেবে দেখতে চাইলে বা console.log() করলে

 

const obj ={name:”rashedul}

console.log(obj.job)

 

  1. Array এর ইনডেক্স এর বাহিরে কোণ ইনডেক্স কে দেখতে চাইলে

 

const  arr = [1,2,3]

console.log(arr[40])

 

  1. Delete করা ভেলু অ্যাক্সেস করতে চাইলে

 

                                  Null কখন আসে

  1. Assign a variable as a null

 

const a = null

 

  1. ভেলু না থাকলে তাকে Null return দিবে

 

 

  • == এবং === এর মধ্যে পার্থক্য কি ?

 

const a = 1; const a = "1"; const b = true;

const a = 0; const a = "0"; const b = false;

if (a == b) {console.log("true");} else {console.log("false");}

 

  • এখানে কি ঘটল সেটা যদি খেয়াল কর তাহলে দেখতে পারবে । true আর ১ “১” মিলে রেজাল্ট দিল true . কিন্তু ১ ,“১” এবং true তো এক না । দুইটা দুই জিনিস । টা আসার কারণ হচ্ছে == দিলে ভিতরে ভিতরে implicit conversion নামে একটা কাজ করে । যার মাধ্যমে স্ট্রিং বা বুলিয়ান যাই থাকুক সে নাম্বারে কনভার্ট করে ফেলবে । এখানে true এর মান ১ আর ১ == ১ মিলে true রেজাল্ট আসছে আর আর অন্যদিকে false এর মান ০ আর ০ == ০ মিলে true রেজাল্ট দিয়েছে

 

  • === মানকেও চেক করে টাইপকেও চেক করে আর == সেটা করে না  

 

  • Scope কি ?

 

  • Global scope এর ভেলু Local scope এ ব্যাবহার করা যাবে কিন্তু Local scope এর ভেলু Global scope ব্যাবহার করা যাবে না

 

let sum = 0;

function add(a, b) { sum += a + b;                 

return sum; }  console.log(add(1, 2));

  • রেড কালার = Local scope

  • অরেঞ্জ কালার = Global scope ধরতে পারি

 

  • curly bracket {} দিয়ে Block scope define করা হয়

  • Var use করলে সেটা প্যারেন্ট এর মধ্যে অ্যাক্সেসেবল হয়ে যায় (এর মানে Hoisting হয় )।

 

function add(a, b) {

  var result = a + b;

  if (result > 9) {

    var mood = "happy";}

  return mood;}

console.log(add(10, 20));

 

  • var এর যায়গায় যদি const বা let ব্যাবহার করতাম তাহলে কিনতু Error খেয়ে জাইতাম । কারণ const ব্লক স্কোপ এর বাইরে accessable নয় । আর যদি var , const , let কিছুই না লিখে শুধু নাম দেই এবং ভেলু assign করি তাহলে সেটা global scope থেকে অ্যাক্সেস পাবে । অর্থাৎ Scope leak হচ্ছে । এটা করা ঠিক না । আমরা চাইব না সব কিছু global হয়ে যাক ।

 

  • var দিয়ে ভেরিয়েবল ডিক্লার করলে সেটা globaly accessable হয়ে যায় । এর আর একটা উদাহরণ দেখে নাও । এখানে For loop এর বাহির থেকে i মান পাওয়া যাচ্ছে । যা উচিত  না ।

 

for (var i = 0; i < 10; i++) {}

console.log(i);

 

 

  • Closure কি ?

 

function stopeWatch() {

  let counter = 0;

  return function () {

    counter++;

    return counter;

  };}

const clock1 = stopeWatch();

const clock2 = stopeWatch();

 

  • বেশি ভালো হয় যদি তুমি ব্রাউজারের console ট্যাবে অউটপুট দেখো ।

 

  • callBack function এর কাজ কি ? (আমরা Function এর parameter হিসেবে Array, Object বা single স্ট্রিং ইত্যাদি পাঠাতে পারি । কিন্তু যদি আমারা একটা ফাংশন কল করার সময় তার parameter হিসেবে যদি একটা ফাংশনকেই পাঠাতে পারি । তাহলে সেটা হবে callBack function )

 

function welcomeMessage(name, cb) {

  console.log(cb);

  cb(name);

}

function goodMorning(name) {

  console.log("good morning ", name);

}

const goodAfternoon = (name) => {

  console.log("good afternoon", name);

};

// const obj = { name: "islam", age: 20 };

// const arr = ["rashedul", "islam", "shihab"];

welcomeMessage("rashedul", goodMorning);

welcomeMessage("jhankar mahbub", goodAfternoon);

 

  • Javascript এ Array একটা Object বিশ্বাস কর না বিশ্বাস হলে উদাহরণ দেখো ।

 

const arr = [2, 3, 5, "rashedul"];

console.log(typeof arr);

 

  • কিন্তু একটা Array কে Array প্রমান করতে পার একভাবে

console.log(typeof null);

 

  • null একটা primitive data type . আমরা তোমাকে বলেছিলাম মনে আছে ? এখন তুমি যদি console.log(typeof null) তাহলে তাকে Object দেখাবে । মানে non-primitive ডাটা টাইপে চলে গেল । এর কিছু কারণ আছে অনেকে বলে এটা javascript এর একটা ভুল । এটা সমাধানের চেষ্টা করেছিল অনেকে । কিন্তু সমাহান করার আগে অনেকে ওয়েবসাইট এ কোড করে ফেলেছিল । হথাথ করে কিছু পরিবর্তন এনে ফেললে এটা অনেক ওয়েবসাইট এর সমস্যা করতে পারে । তাই এই আবেদনকে প্রত্যাখ্যান করা হয় ।

 

 

 

 

All module link

আর আমার github এ যাইতে চাইলে এই লিঙ্কে ক্লিক করুন

About

Md: Rashedul Islam Shihab

Writer of this note

Batch4

Social accounts

 

 

Previous Post Next Post