Skip to content

Commit

Permalink
Merge pull request #98 from vivasoft-ltd/develop
Browse files Browse the repository at this point in the history
Revised and updated the basic section
  • Loading branch information
tajnur007 committed Sep 4, 2023
2 parents 9120a6c + 505b84e commit b368937
Show file tree
Hide file tree
Showing 18 changed files with 329 additions and 101 deletions.
15 changes: 15 additions & 0 deletions basic/1. execution-context/Practices/practice2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

```JavaScript
let num = 5;

const changeNum = () => {
let num;
num = 72;
console.log(num);
}

changeNum();
console.log(num);
```

উপরের কোডের আউটপুট কি হবে? যদি changeNum() ফাংশনের ভেতরে গ্লোবাল ভ্যারিয়েবল num -এর মান পরিবর্তন না হয় তাহলে আমরা কিভাবে সেটা করতে পারবো?
18 changes: 8 additions & 10 deletions basic/1. execution-context/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

- **গ্লোবাল এক্সিকিউশন কন্টেক্সট -** এটি ডিফল্ট এক্সিকিউশন কন্টেক্সট। যে কোডটি কোন ফাংশনের ভিতরে নেই তা গ্লোবাল এক্সিকিউশন কন্টেক্সটে আছে। এটি দুটি জিনিস সম্পন্ন করেঃ

- এটি একটি গ্লোবাল অবজেক্ট তৈরি করে যা একটি **window** অবজেক্ট (ব্রাউজারের ক্ষেত্রে) এবং **global** অবজেক্ট (নোডের ক্ষেত্রে)
- এটি একটি গ্লোবাল অবজেক্ট তৈরি করে যা ব্রাউজারের ক্ষেত্রে **window** অবজেক্ট এবং নোডের ক্ষেত্রে **global** অবজেক্ট নামে পরিচিত।
- **this** এর ভ্যালু হিসাবে গ্লোবাল অবজেক্টকে সেট করে। একটি প্রোগ্রামে শুধুমাত্র একটি গ্লোবাল এক্সিকিউশন কন্টেক্সট থাকতে পারে।

- **ফাংশন এক্সিকিউশন কন্টেক্সট -** যখনই কোন ফাংশন কল করা হয়, সেই ফাংশনের জন্য জেএস ইঞ্জিন একটি নতুন এক্সিকিউশন কন্টেক্সট তৈরি করে। প্রতিটি ফাংশনের নিজস্ব এক্সিকিউশন কন্টেক্সট আছে। একাধিক সংখ্যক ফাংশন এক্সিকিউশন কন্টেক্সট হতে পারে। ফাংশন এক্সিকিউশন কন্টেক্সটের গ্লোবাল এক্সিকিউশন কন্টেক্সটের সকল কোড অ্যাক্সেস আছে যদিও গ্লোবাল কন্টেক্সটের ফাংশন এক্সিকিউশন কন্টেক্সটের কোডের অ্যাক্সেস নেই। গ্লোবাল এক্সিকিউশন কন্টেক্সটের কোড এক্সিকিউট করার সময় যদি জেএস ইঞ্জিন কোন ফাংশন কল পায়, এটি সেই ফাংশনের জন্য একটি নতুন ফাংশন এক্সিকিউশন কন্টেক্সট তৈরি করে। ব্রাউজার কন্টেক্সটে, যদি কোড strict মোডে এক্সিকিউট করা হয়, তাহলে **this** এর ভ্যালু **undefined** অন্যথায় **window** অবজেক্ট হবে ফাংশন এক্সিকিউশন কন্টেক্সট।
Expand Down Expand Up @@ -37,13 +37,13 @@ console.log(results); // 70
### ১। Creation phase

- একটি গ্লোবাল অবজেক্ট তৈরি করে অর্থাৎ, ওয়েব ব্রাউজারে **window** বা নোড জেএসে **global**
- **this** নামে একটি গ্লোবাল ভ্যারিয়াবল তৈরি করে যা গ্লোবাল অবজেক্টকে নির্দেশ করে।
- **this** নামে একটি গ্লোবাল ভ্যারিয়েবল তৈরি করে যা গ্লোবাল অবজেক্টকে নির্দেশ করে।
- সকল ভ্যারিয়েবল এবং ফাংশনের জন্য একটি মেমোরি স্পেস সেটআপ করে।
- ভ্যারিয়েবলের ডিফল্ট ভ্যালু হিসাবে **undefined** অ্যাসাইন করে এবং ফাংশন ডিক্লেয়ারেশনগুলি হীপ মেমোরিতে স্টোর করে।

আমাদের উদাহরণে, creation phase - এ জাভাস্ক্রিপ্ট ইঞ্জিন গ্লোবাল এক্সিকিউশন কন্টেক্সটে ভ্যারিয়েবল a ও results এবং ফাংশন ডিক্লেয়ারেশন multByTen() স্টোর করে। এছাড়াও, এটি ভ্যারিয়েবল a এবং results কে undefined হিসাবে ইনিশিয়ালাইজ করে।

> #### Global Execution Context (Creaton Phase Browser)
> #### Global Execution Context (Creation Phase Browser)
>
> - **window**: Global Object
> - **this**: window
Expand Down Expand Up @@ -73,7 +73,7 @@ Execution phase - এ, জাভাস্ক্রিপ্ট ইঞ্জি
> - **this**: window
> - **a**: undefined
আমাদের উদাহরণে, ফাংশন এক্সিকিউশন কন্টেক্সট **arguments** অবজেক্ট তৈরি করে যা ফাংশনে পাস করা সকল প্যারামিটারকে নির্দেশ করে, **this** এর মান হিসাবে গ্লোবাল অবজেক্টে **window** কে সেট করে এবং **a** প্যারামিটার কে **undefined** হিসাবে ইনিশিয়ালাইজ করে।
আমাদের উদাহরণে, ফাংশন এক্সিকিউশন কন্টেক্সট **arguments** অবজেক্ট তৈরি করে যা ফাংশনে পাস করা সকল প্যারামিটারকে নির্দেশ করে, **this** এর মান হিসাবে গ্লোবাল অবজেক্টে **window** কে সেট করে এবং **a** প্যারামিটার কে **undefined** হিসাবে ইনিশিয়ালাইজ করে।

> #### Function Execution Context (Execution Phase Browser)
>
Expand All @@ -83,9 +83,6 @@ Execution phase - এ, জাভাস্ক্রিপ্ট ইঞ্জি
ফাংশন এক্সিকিউশন কন্টেক্সটে **Execution phase** চলার সময়, এটি **a** প্যারামিটারে **7** অ্যাসাইন করে এবং ফলাফল **(70)** গ্লোবাল এক্সিকিউশন কন্টেক্সটের **results** ভ্যারিয়েবলে রিটার্ন করেঃ




> #### Global Execution Context (Execution Phase Browser)
>
> - **window**: Global Object
Expand All @@ -94,11 +91,12 @@ Execution phase - এ, জাভাস্ক্রিপ্ট ইঞ্জি
> - **multByTen**: fn()
> - **results**: 70
### আরও বাংলা টিউটোরিয়াল
> - ভালো কিছু পাওয়া যায়নি।
### আরও বাংলা টিউটোরিয়াল

> - ভালো কিছু পাওয়া যায়নি।
### বাংলা ভিডিও টিউটোরিয়াল

### বাংলা ভিডিও টিউটোরিয়াল
> - [Execution Context in Javascript | JS All You Need To Know | JS Bangla Tutorials](https://www.youtube.com/watch?v=MoPW9pxHMkI)
> - [JavaScript Advance (Bangla) Execution Context](https://www.youtube.com/watch?v=Ke0HhvI9tpw)
Loading

0 comments on commit b368937

Please sign in to comment.