Module ৩৪ এ আমরা যাকিছু শিখেছি
Javascript Tricky concepts
Primitive data type Number String Boolean Undefined Null 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 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 True Any number (negative or positive) without 0 Any String without empty string [] empty Array {} empty Object
Falsy Flase Zeero ( 0 ) Empty string Null NaN
const x = "এখানে ভেলু বসায়ে দেখো"; if (x) { console.log("variable is truthy"); } else { console.log("variable is falsy"); } |
|
Undefined Value not defined or assign ফাংশনে return না করলে Return লিখেছি কিন্তু কিছু return করিনি Function এর সকল Parameter না দিয়ে রেজাল্ট পেতে চাইলে Object এর কোণ property অবজেক্ট এর মধ্যে না থাকলে তাকে রেজাল্ট হিসেবে দেখতে চাইলে বা console.log() করলে
const obj ={name:”rashedul} console.log(obj.job) |
Array এর ইনডেক্স এর বাহিরে কোণ ইনডেক্স কে দেখতে চাইলে
const arr = [1,2,3] console.log(arr[40]) |
Delete করা ভেলু অ্যাক্সেস করতে চাইলে
Null কখন আসে Assign a variable as a null
ভেলু না থাকলে তাকে 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 রেজাল্ট দিয়েছে
|
let sum = 0; function add(a, b) { sum += a + b; return sum; } console.log(add(1, 2)); |
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 হয়ে যাক ।
|
for (var i = 0; i < 10; i++) {} console.log(i); |
|
function stopeWatch() { let counter = 0; return function () { counter++; return counter; };} const clock1 = stopeWatch(); const clock2 = stopeWatch(); 
|
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); |
const arr = [2, 3, 5, "rashedul"]; console.log(typeof arr); console.log(typeof null); |
All module link
আর আমার github এ যাইতে চাইলে এই লিঙ্কে ক্লিক করুন
About

Md: Rashedul Islam Shihab Writer of this note Batch4 Social accounts  
|
Post a Comment (0)