aboutsummaryrefslogtreecommitdiff
path: root/files/bn/web/javascript/guide
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
commit4b1a9203c547c019fc5398082ae19a3f3d4c3efe (patch)
treed4a40e13ceeb9f85479605110a76e7a4d5f3b56b /files/bn/web/javascript/guide
parent33058f2b292b3a581333bdfb21b8f671898c5060 (diff)
downloadtranslated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.gz
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.bz2
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.zip
initial commit
Diffstat (limited to 'files/bn/web/javascript/guide')
-rw-r--r--files/bn/web/javascript/guide/grammar_and_types/index.html635
-rw-r--r--files/bn/web/javascript/guide/index.html123
2 files changed, 758 insertions, 0 deletions
diff --git a/files/bn/web/javascript/guide/grammar_and_types/index.html b/files/bn/web/javascript/guide/grammar_and_types/index.html
new file mode 100644
index 0000000000..b5dbd8bda4
--- /dev/null
+++ b/files/bn/web/javascript/guide/grammar_and_types/index.html
@@ -0,0 +1,635 @@
+---
+title: 'ভ্যালু, ভ্যারিয়েবল, এবং লিটারেল'
+slug: Web/JavaScript/Guide/Grammar_and_types
+tags:
+ - জাভাস্ক্রিপ্ট
+translation_of: Web/JavaScript/Guide/Grammar_and_types
+---
+<p>{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Control_flow_and_error_handling")}}</p>
+
+<p>এই চ্যাপ্টারের আলোচ্য বিষয় হল ভ্যালু যা জাভাস্ক্রিপ্ট চেনে এবং জাভাস্ক্রিপ্ট এক্সপ্রেশন গঠনের মূল কাঠামো: ভেরিয়েবল, কনস্টান্ট, এবং লিটারেল সম্পর্কে বর্ণনা করে।</p>
+
+<h2 id="Values(মান)">Values(মান)</h2>
+
+<p>জাভাস্ক্রিপ্ট নিচে উল্লেখিত পাঁচ ধরণের প্রাথমিক টাইপের ভ্যালুগুলো চেনে:</p>
+
+<table>
+ <caption> </caption>
+ <thead>
+ <tr>
+ <th scope="col">টাইপ</th>
+ <th scope="col">ভ্যালু টাইপের উদাহরন / ব্যাখ্যা</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Number" style="color: rgb(34, 85, 170); text-decoration: underline; line-height: 21px;" title="en-US/docs/JavaScript/Reference/Global Objects/Number">সংখ্যা/Number</a></td>
+ <td>42, 3.14159</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Boolean" style="color: rgb(34, 85, 170); text-decoration: underline; line-height: 21px;" title="en-US/docs/JavaScript/Reference/Global Objects/Boolean">বুলিয়ান/Boolean</a></td>
+ <td>true / false</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/docs/JavaScript/Reference/Global_Objects/String" style="color: rgb(34, 85, 170); text-decoration: underline; line-height: 21px;" title="en-US/docs/JavaScript/Reference/Global Objects/String">স্ট্রিং/String</a></td>
+ <td>"Howdy"</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">null</span></td>
+ <td><span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">null বা "শুন্য"</span><span style="line-height: 21px;"> ভ্যালু নির্দেশ করার জন্য এই কী-ওয়ার্ড টি ব্যবহার করা হয়। এছাড়া নাল একপ্রকার প্রিমিটিভ ভ্যালু। যেহেতু জাভাস্ক্রিপ্ট ইংরেজী হরফের কেইস-সংবেদনশীল(</span>case-sensitive), <code style="font-size: 14px;">null তাই</code> <code style="font-size: 14px;">Null</code>, <code style="font-size: 14px;">NULL অথবা এগুলোর সমমানের </code>সবগুলো-ই ভিন্ন।</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/docs/JavaScript/Reference/Global_Objects/undefined" style="color: rgb(34, 85, 170); text-decoration: underline; font-family: 'Courier New', 'Andale Mono', monospace; line-height: normal;" title="en-US/docs/JavaScript/Reference/Global Objects/undefined">undefined</a></td>
+ <td><span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">undefined হল </span>top-level প্রোপার্টি যার <span style="line-height: 1.5;">ভ্যালু হচ্ছে </span><span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">এটা বা</span>'অসংজ্ঞায়িত' হিসেবে চিহ্নিত করার জন্য <span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">। এটা</span><span style="line-height: 1.5;">একটি প্রিমিটিভ ভ্যালু। </span></td>
+ </tr>
+ </tbody>
+</table>
+
+<p> </p>
+
+<p>এই গুটিকয়েক টাইপের ভ্যালু অথবা <em>ডেটা টাইপ</em> ব্যবহার করেই আসলে যেকোন কাজের কোড লিখে ফেলা সম্ভব। Integer আর ভগ্নাংশ  (floating value) রাখার জন্য পৃথক ডেটা-টাইপ নাই। একইভাবে, তারিখ রাখার জন্যে কোন আলাদা ডেটা-টাইপ নাই, অবশ্য আপনি চাইলে <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="en-US/docs/JavaScript/Reference/Global Objects/Date">Date</a></code> অবজেক্ট আর এর বিভিন্ন কাজের মেথড ব্যবহার করতে পারেন।</p>
+
+<p><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object" title="en-US/docs/JavaScript/Reference/Global Objects/Object">Objects</a> আর <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Function" title="en-US/docs/JavaScript/Reference/Global Objects/Function">functions</a> হচ্ছে ভাষাটির অন্যতম গুরুত্বপূর্ণ উপাদান। ফাংশন অন্যান্য প্রোগ্রামিং ভাষার মতই - কোন একটি বিশেষ কাজ করার জন্য লেখা হয় ফাংশন। আর অবজেক্টে থাকে নাম-ভ্যালু যুগল! (key-value pairs) - নাম ব্যবহার করে ভ্যালুতে কি রাখা আছে জানতে পারবেন।</p>
+
+<h3 id="ডেটা-টাইপের_রূপান্তরকনভার্সন">ডেটা-টাইপের রূপান্তর/কনভার্সন</h3>
+
+<p>জাভাস্ক্রিপ্ট ডায়নামিক-টাইপ (dynamically typed) ভাষা, মানে কোন ভ্যারিয়েবলের টাইপ কি সেটা বলে দিতে হয়না, জাভাস্ক্রিপ্ট নিজেই রান-টাইমে বের করবে। এই টাইপ পরিবর্তন ও করা যায় রান-টাইমে। স্ক্রিপ্ট চলার সময় প্রয়োজনমত ভ্যারিয়েবলের টাইপ ও কনভার্ট করে নেওয়া হয়। ধরে নেই, আপনি নিচের মত করে ভ্যারিয়েবল ডিক্লেয়ার করেছেনঃ</p>
+
+<div style="overflow: hidden;">
+<pre class="brush: js">var answer = 42;
+</pre>
+</div>
+
+<p>পরে কোন এক সময় আপনি একই ভ্যারিয়েবলে স্ট্রিং মান বসালেনঃ</p>
+
+<div style="overflow: hidden;">
+<pre class="brush: js">answer = "Thanks for all the fish...";
+</pre>
+</div>
+
+<p>জাভাস্ক্রিপ্ট ডায়নামিক-টাইপ বলেই এই লাইনে কোন ভুল হয়নি। কোডের ভাষা জাভা/সি হলে এই লাইনেই ভুল হত।</p>
+
+<p>যদি কোন এক্সপ্রেশনে সংখ্যা আর স্ট্রিং মান এর মাঝে '+' ওপারেটের ব্যবহার করেন, তাহলে সংখ্যা-ভ্যালু গুলো স্ট্রিং এ কনভার্ট হয়ে যাবে। যেমনঃ</p>
+
+<pre class="brush: js">x = "The answer is " + 42 // "The answer is 42"
+y = 42 + " is the answer" // "42 is the answer"
+</pre>
+
+<p>তবে '+' ব্যাতীত অন্য অপারেটরের ক্ষেত্রে কিন্তু সংখ্যাকে স্ট্রিং এ কনভার্ট করা হয় না! যেমনঃ</p>
+
+<pre class="brush: js">"37" - 7 // 30
+"37" + 7 // "377"
+
+</pre>
+
+<p>আসলে জাভাস্ক্রিপ্টে '+' সাইন দিয়ে যেমন নিউমেরিক সংখ্যার যোগ এর কাজ করা হয়। ঠিক তেমনি স্ট্রিং এর ক্ষেত্রে দুইটা স্ট্রিং কে জোড়া দেয়ার কাজ করে থাকে। যাকে ইংরেজিতে <code>concatenation</code> বলা হয়। এই কাজটা <code>concat()</code> নামক ফাংশন ব্যবহার করেও করা হয়ে থাকে।</p>
+
+<h3 id="স্ট্রিং_থেকে_সংখ্যা">স্ট্রিং থেকে সংখ্যা</h3>
+
+<p>স্ট্রিং কে সংখ্যায় কনভার্ট করতে পারবেন নিচের মেথডগুলো ব্যবহার করেঃ</p>
+
+<h4 id="parseInt()_আর_parseFloat()"><code>parseInt()</code> আর <code>parseFloat()</code></h4>
+
+<p>দেখুনঃ <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/parseInt" title="en-US/docs/JavaScript/Reference/Global Objects/parseInt">parseInt()</a></code> আর <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/parseFloat" title="en-US/docs/JavaScript/Reference/Global Objects/parseFloat">parseFloat()</a></code> পাতায়।</p>
+
+<p><code>parseInt</code> শুধুমাত্র integer রিটার্ন করে, তাই দশমিক সংখ্যা নিয়ে কাজকারবারেই এর ব্যবহার সীমিত। এছাড়া, একটি ভাল অভ্যাস হল এই ফাংশনে ২য় প্যারামিটারে কনভার্সনের ভিত্তি (base) পাঠিয়ে দেওয়া।</p>
+
+<h4 id="''_অপারেটর">'+' অপারেটর</h4>
+
+<p>স্ট্রিং কে সংখ্যায় কনভার্ট করার আরেকটা বুদ্ধি হল '+' অপারেটর ব্যবহার করাঃ</p>
+
+<pre class="brush: js">"1.1" + "1.1" = "1.11.1"
+(+"1.1") + (+"1.1") = 2.2 // শুধুমাত্র বোঝার সুবিধার জন্যে বন্ধনী ব্যবহার করা হয়েছে।</pre>
+
+<h2 id="ভ্যারিয়েবল">ভ্যারিয়েবল</h2>
+
+<p>আপনার এপ্লিকেশনে ব্যবহার করার জন্য যেকোন ভ্যালু, মেমরী তে সংরক্ষণ করে রাখতে ভ্যারিয়েবল ব্যবহার করুন। ভ্যারিয়েবল হিসেবে আমরা যে নামগুলো দিতে পারব তাদের <em>identifiers</em> বলা হয়। এগুলো দেওয়ার কিছু নিয়ম আছেঃ</p>
+
+<p>জাভাস্ক্রিপ্টে <em>identifiers </em>অবশ্যই কোন বর্ণ (letter), আন্ডারস্কোর (_) অথবা ডলার চিহ্ন ($) দিয়ে শুরু করতে হবে; পরবর্তী অক্ষরে সংখ্যা (0-9) ব্যবহার করা যাবে। জাভাস্ক্রিপ্টে হরফের case (ইংরেজীতে বড় হাতের বা ছোট হাতের হরফ) গুরুত্বপূর্ণ - ইংরেজী "A" থেকে শুরু করে "Z" পর্যন্ত বর্ণগুলো বড় হাতের, আর "a" থেকে শুরু করে "z" পর্যন্ত বর্ণগুলো ছোট হাতের।</p>
+
+<p>জাভাস্ক্রিপ্ট ১.৫ বা এর ওপরের ভার্সনগুলোতে আপনি ISO 8859-1 বা ইউনিকোড অক্ষর যেমন অ/আ/ক/খ ব্যবহার করতে পারবেনঃ</p>
+
+<pre class="brush: js">var ফল = "কলা";
+alert(ফল);</pre>
+
+<p>ভ্যারিয়েবলের নাম হিসেবে বাংলা অক্ষর ব্যবহার করছি! এছাড়াও \uXXXX {{anch("Unicode escape sequences")}} ক্যারেকটার হিসেবে আইডেন্টিফায়ারে ব্যবহার করা যাবে।</p>
+
+<p>বৈধ ভ্যারিয়েবলের নামের কিছু উদাহরণঃ <code>Number_hits</code>, <code>temp99</code>, এবং <code>_name</code>।</p>
+
+<h3 id="ভ্যারিয়েবল_তৈরি_করা">ভ্যারিয়েবল তৈরি করা</h3>
+
+<p>দু'টি উপায়ে ভ্যারিয়েবল তৈরি (declare) করা যায়ঃ</p>
+
+<ul>
+ <li><a href="/en-US/docs/JavaScript/Reference/Statements/var" title="en-US/docs/JavaScript/Reference/Statements/var">var</a> কী-ওয়ার্ড ব্যবহার করে। যেমনঃ <code>var x = 42</code>। লোকাল আর গ্লোবাল দুই ধরণের ভ্যারিয়েবল-ই এই কীওয়ার্ড দিয়ে তৈরি করা যায়।</li>
+ <li>সরাসরি ভ্যালু এসাইন করে দিয়ে। যেমনঃ <code>x = 42</code>। এটি করলে <a href="#Global_Variables">global ভ্যারিয়েবল</a> তৈরি হবে আর strict লেভেলের ওয়ার্নিং তৈরি হবে। তাই এই পদ্ধতি ব্যবহার করা অনুচিত।</li>
+</ul>
+
+<h3 id="ভ্যারিয়েবলের_মান_কী">ভ্যারিয়েবলের মান কী?</h3>
+
+<p><code>var</code> স্টেটমেন্ট ব্যবহার করে কোন ভ্যালু দিয়ে ইনিশিয়ালাইজ না করলে তার মান হিসেবে থাকবে <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/undefined" title="en-US/docs/JavaScript/Reference/Global Objects/undefined">undefined</a></code>।</p>
+
+<p>তৈরি করা হয়নি (undeclared) এমন কোন ভ্যারিয়েবল নিয়ে কাজ করতে গেলে <code>ReferenceError</code> এক্সেপশন পাবেনঃ</p>
+
+<pre class="brush: js">var a;
+console.log("The value of a is " + a); // logs "The value of a is undefined"
+console.log("The value of b is " + b); // throws ReferenceError exception
+</pre>
+
+<p>কোন ভ্যারিয়েবলে ভ্যালু দেওয়া হয়েছে কিনা জানতে তাই <code>undefined</code> ব্যবহার করুন। নিচের কোডে <code>input</code> ভ্যারিয়েবলে কোন ভ্যালু দেই নি, তাই <code><a href="/en-US/docs/JavaScript/Reference/Statements/if...else" title="en-US/docs/JavaScript/Reference/Statements/if...else">if</a></code> স্টেটমেন্টে <code>true</code> পাওয়া যাচ্ছেঃ</p>
+
+<pre class="brush: js">var input;
+if(input === undefined){
+ doThis();
+} else {
+ doThat();
+}
+</pre>
+
+<p><span class="comment">The following is related to "Variables" section as potential values in assignment.</span></p>
+
+<p>বুলিয়ান কন্টেক্সট এ ব্যবহার করলে অবশ্য <code>undefined</code>, <code>false</code> হিসেবে আচরণ করে। যেমনঃ নিচের কোডে <code>myFunction</code> ফাংশনটি একজিকিউট হবে কারণ <code>myArray</code> এলিমেন্ট টি তৈরি করা হয় নি।</p>
+
+<pre class="brush: js">var myArray = new Array();
+if (!myArray[0]) myFunction();
+</pre>
+
+<p>তবে numeric কন্টেক্সটে ব্যবহৃত হলে <code>undefined</code> কনভার্ট হবে <code>NaN</code> এঃ</p>
+
+<pre class="brush: js">var a;
+a + 2 = NaN</pre>
+
+<p>যখন কোন নাল ভ্যারিয়েবল ব্যবহারের চেষ্টা করেন, তখন বুলিয়ান কন্টেক্সটে false আর numeric কন্টেক্সটে 0 হিসেবে এর মান নির্ণিত হয়ঃ</p>
+
+<pre class="brush: js">var n = null;
+console.log(n * 32); // logs 0
+</pre>
+
+<h3 id="ভ্যারিয়েবলের_স্থায়িত্বস্কোপ_(scope)">ভ্যারিয়েবলের স্থায়িত্ব/স্কোপ (scope)</h3>
+
+<p>যখন একটা ভ্যারিয়েবল কে কোন ফাংশনের বাইরে তৈরি করেন তখন তাকে <em>global </em>ভ্যারিয়েবল বলি, কারণ ডকুমেন্টের যেকোন জায়গায় ঐ ভ্যারিয়েবল টা ব্যবহার করা যাবে। অপরদিকে, কোন ফাংশনের ভিতর যদি ভ্যারিয়েবলটি তৈরি করেন, তাহলে সেটি <em>local </em>ভ্যারিয়েবল, কারণ ঐ ফাংশনের বাইরে ঐ ভ্যারিয়েবলের কোন অস্তিত্ব নাই।</p>
+
+<p>জাভাস্ক্রিপ্টে <a href="/bn-BD/docs/JavaScript/Guide/Statements#Block_Statement" title="/bn-BD/docs/JavaScript/Guide/Statements#Block_Statement">ব্লক স্টেটেমেন্টের</a> আলাদা কোন স্কোপ নেই; বরং একটা ফাংশনে যতগুলো ব্লক-ই থাকুক না কেন সবগুলো একই স্কোপে - ঐ ফাংশনের স্কোপে থাকে। যেমন নিচের কোড 5 লগ করবে (জাভাস্ক্রিপ্ট কনসোলে 5 লিখবে) কারণ x ভ্যারিয়েবলের স্কোপ if ব্লকের বাইরেও আছে।</p>
+
+<pre class="brush: js">if (true) {
+ var x = 5;
+}
+console.log(x);
+</pre>
+
+<p>অন্য প্রোগ্রামিং ভাষার সাথে জাভাস্ক্রিপ্টের অমিল এখানেই। আরেকটা অপ্রত্যাশিত ব্যাপার হলঃ পরে তৈরি করা হয়েছে এমন ভ্যারিয়েবল আগে ব্যবহার করতে পারবেন অনায়াসে। কারণ ধরে নেওয়া হয় যে ভ্যারিয়েবল গুলো ফাংশনের শুরুতেই টুকে নেওয়া হয়েছে। তবে যাই হোক, যদি কোন ভ্যালু দিয়ে ভ্যারিয়েবল initialize  না করেন তাহলে এর মান <code>undefined</code> পাবেন ।</p>
+
+<pre class="brush: js">/**
+ * Example 1
+ */
+console.log(x === undefined); // logs "true"
+var x = 3;
+
+
+/**
+ * Example 2
+ */
+// will return a value of undefined
+var myvar = "my value";
+
+(function() {
+ console.log(myvar); // undefined
+ var myvar = "local value";
+})();
+</pre>
+
+<p>২ নাম্বার উদাহরণ টি খুব সাবধানে দেখুন! ২ নম্বর উদাহরণটি এভাবে কাজ করবেঃ</p>
+
+<pre class="brush: js">var myvar = "my value";
+
+(function() {
+ var myvar;
+ console.log(myvar); // undefined
+ myvar = "local value";
+})();</pre>
+
+<p>যেমনটা বলেছিলাম, সব <code>var স্টেটমেন্টগুলো যেন ফাংশনের শুরুতেই তৈরি করা হয়েছে। এভাবে কোড করলে ভুল হওয়ার সম্ভাবনা কমে যায় আর সহজেই বুঝতে পারা যায় কী হচ্ছে!</code></p>
+
+<h3 id="গ্লোবাল_ভ্যারিয়েবল">গ্লোবাল ভ্যারিয়েবল</h3>
+
+<p>গ্লোবাল ভ্যারিয়েবল হচ্ছে আসলে একটা <em>global object</em> এর প্রোপার্টি! ওয়েবপেইজে গ্লোবাল অবজেক্ট টা হচ্ছে <code><a href="/en-US/docs/DOM/window" title="en-US/docs/DOM/window">window</a>, তাই আপনি </code><code>window.<em>variable </em>সিন্ট্যাক্স ব্যবহার করেও গ্লোবাল ভ্যারিয়েবল এক্সেস করতে পারবেন।</code></p>
+
+<p><span class="comment">need links to pages discussing scope chains and the global object</span>ফলস্বরূপ, ব্রাউজারের এক উইন্ডো তে তৈরি করা  গ্লোবাল ভ্যারিয়েবল কে ব্রাউজারের অন্য উইন্ডোতে বা ফ্রেম থেকে এক্সেস করা যাবে উইন্ডো বা ফ্রেমটির name ব্যবহার করে। যেমন, কোন একটা <code>FRAMESET ডকুমেন্টে তৈরি করা </code><code>phoneNumber ভ্যারিয়েবলকে এর কোন বাচ্চা ফ্রেম (child frame) থেকে </code><code>parent.phoneNumber ব্যবহার করে এক্সেস করতে পারবেন।</code></p>
+
+<h2 id="কন্সট্যান্ট">কন্সট্যান্ট</h2>
+
+<p>শুধু পড়া যাবে, মান পরিবর্তন করা যাব্বে না এমন ভ্যারিয়েবল তৈরি করতে পারেন <code><a href="/en-US/docs/JavaScript/Reference/Statements/const" title="en-US/docs/JavaScript/Reference/Statements/const">const</a> কী-ওয়ার্ড দিয়ে। এর আইডেন্টিফায়ার এর সিন্ট্যাক্স ভ্যারিয়েবলের আইডেন্টিফায়ার এর মতইঃ অবশ্যি অক্ষর, আন্ডারস্কোর অথবা $ চিহ্ন দিয়ে শুরু হতে হবে আর এরপর অক্ষর, সংখ্যা বা আন্ডারস্কোর থাকতে পারবে।</code></p>
+
+<pre class="brush: js">const prefix = '212';
+</pre>
+
+<p>শুরুতেই মান নির্ধারণ করে দেওয়ার পর কন্সট্যান্ট এর মান পরিবর্তন করা যায় না বা নতুন করে একই নামে কন্সট্যান্ট তৈরি করা যায় না।</p>
+
+<p>কন্সট্যান্ট এর স্কোপ ভ্যারিয়েবলের মতই। তবে <code>const কী-ওয়ার্ড টা অবশ্যই লিখতে হবে, না হলে জাভাস্ক্রিপ্ট কীভাবে ধরবে আপনি ভ্যারিয়েবল নাকি কন্সট্যান্ট কোনটা তৈরি করতে চাচ্ছেন! কীওয়ার্ড টা ব্যবহার না করলে তাই একে ভ্যারিয়েবল হিসেবেই গণ্য করা হবে।</code></p>
+
+<p>একই স্কোপের ভেতর কোণ ফাংশন অথবা ভ্যারিয়েবলের নামে কন্সট্যান্ট তৈরি করা যায় না। যেমনঃ</p>
+
+<pre class="brush: js">// নিচের কোডে ভুল আছে
+function f() {};
+const f = 5;
+
+// নিচেরটাও ভুল!
+function f() {
+ const g = 5;
+ var g;
+
+ //statements
+}
+</pre>
+
+<h2 id="লিট্যারেল">লিট্যারেল</h2>
+
+<p>লিটারেল কে জাভাস্ক্রিপ্টে ভ্যালু হিসেবে ব্যবহার করা যায়। এগুলো যেভাবে দেখানো হয়, সেভাবেই লিখতে হবে - এগুলো ভ্যারিয়েবল না। যেভাবে দেখানো হচ্ছে সেভাবেই কোডে লিখতে হবে বলেই এদের নাম লিটারেল (literal)! এই অংশে নিচের লিট্যারেল গুলো নিয়ে আলোচনা করেছিঃ</p>
+
+<ul>
+ <li>{{anch("Array লিটারেল")}}</li>
+ <li>{{anch("বুলিয়ান লিটারেল")}}</li>
+ <li>{{anch("ভগ্নাংশের লিটারেল")}}</li>
+ <li>{{anch("Integers")}}</li>
+ <li>{{anch("Object literals")}}</li>
+ <li>{{anch("String literals")}}</li>
+</ul>
+
+<h3 id="Array_লিটারেল">Array লিটারেল</h3>
+
+<p>Array লিটারেল হচ্ছে শূণ্য বা এর থেকে বেশি সংখ্যক "এক্সপ্রেশনের" একটা লিস্ট - এই সব এক্সপ্রেশনের প্রত্যেকেই হচ্ছে array টির একেকটি সদস্য - এই লিস্টের সামনে আর পরে তৃতীয় বন্ধনী ([]) ব্যবহার করতে হবে। যখন আপনি array লিটারেল ব্যবহার করে array তৈরি করবেন, তখন এই লিস্টের ভ্যালুগুলোকে array টির সদস্য হিসেবে বিবেচনা করে arrayটি ইনিশিয়ালাইজ করা হয়। আর যতগুলো সদস্য দিলাম, array এর length তত।</p>
+
+<p>নিচের উদাহরণে ৩ সদস্য বিশিষ্ট তদন্ত কমিটি থুক্কু <code>coffees নামের array তৈরি করা হয়েছে - array টির length ও তাই তিনঃ</code></p>
+
+<pre class="brush: js">var coffees = ["French Roast", "Colombian", "Kona"];
+</pre>
+
+<p><strong>খেয়াল করুনঃ</strong> array লিটারেল হচ্ছে বিশেষ ধরণের অবজেক্ট ইনিশিয়ালাইজার। দেখুন <a href="/bn-BD/docs/JavaScript/Guide/Working_with_Objects#Using_Object_Initializers" title="/bn-BD/docs/JavaScript/Guide/Working_with_Objects#Using_Object_Initializers">কিভাবে অবজেক্ট ইনিশিয়ালাইজার ব্যবহার করা যায়।</a></p>
+
+<p>যদি টপ-লেভেল কোডে (মানে ফাংশনের বাইরের কোডে) array তৈরি করা হয়, যেই এক্সপ্রেশনে array লিটারেলটি আছে - সেই এক্সপ্রেশনটি যতবার execute করা হবে ততবার-ই array টি ইন্টারপ্রেট (নতুন করে তৈরি) করা হবে। এছাড়া কোন ফাংশনের ভেতর array লিটারেল ব্যবহার করলে যতবার ফাংশনটি কল করবেন ততবার লিটারেলটি তৈরি করা হবে।</p>
+
+<p>Array লিটারেল <code>Array</code> অবজেক্ট-ও বটে। পড়ুন <a href="/bn-BD/docs/JavaScript/Guide/Predefined_Core_Objects#Array_Object" title="/bn-BD/docs/JavaScript/Guide/Predefined_Core_Objects#Array_Object">বিস্তারিত</a>।</p>
+
+<h4 id="Array_লিটারেলে_বাড়তি_কমা'র_ব্যবহার">Array লিটারেলে বাড়তি কমা'র ব্যবহার</h4>
+
+<p>Array লিটারেলে যে সব সদস্য দিতেই হবে এমন কথা নাই - যদি কোন row তে পরপর দুইটা কমা ব্যবহার করেন তাহলে কমা দুটোর মাঝের সদস্যটি <code>undefined</code> হিসেবে থাকে। নিচের উদাহরণে <code>fish</code> array তৈরি করা হয়েছে এভাবেঃ</p>
+
+<pre class="brush: js">var fish = ["Lion", , "Angel"];
+</pre>
+
+<p>এই array তে দুটো সদস্যের মান আছে আর একটির ভ্যালু নাই। (<code>fish[0] </code>হচ্ছে "Lion", <code>fish[1]</code> হচ্ছে <code>undefined</code>, আর <code>fish[2]</code> হচ্ছে "Angel")।</p>
+
+<p>সদস্যের লিস্টের শেষে যদি কমা দিয়ে রাখেন সেটি অগ্রাহ্য করা হবে। নিচের উদাহরণে array এর length তিন। <code>myList[3]</code> বলে কোন সদস্য নেই। শেষের এই অতরিক্ত কমা ছাড়া বাকি সব কমা-ই নতুন সদস্য নির্দেশ করে। (<strong>খেয়াল করুনঃ</strong> পুরোনো ব্রাউজারে শেষের অতিরিক্ত কমা ত্রুটি তৈরি করতে পারে তাই লিস্টের শেষে বাড়তি কমা না দেওয়াই ভাল।)</p>
+
+<pre class="brush: js">var myList = ['home', , 'school', ];
+</pre>
+
+<p>নিচের উদাহরণে array এর length চার।  <code>myList[0]</code> আর <code>myList[2]</code> অসংজ্ঞায়িত।</p>
+
+<pre class="brush: js">var myList = [ , 'home', , 'school'];
+</pre>
+
+<p>নিচের উদাহরণে array এর length চার।  <code>myList[1]</code> আর <code>myList[3]</code> অসংজ্ঞায়িত।<code> শুধুমাত্র শেষের কমা অগ্রাহ্য করা হয়েছেঃ</code></p>
+
+<pre class="brush: js">var myList = ['home', , 'school', , ];
+</pre>
+
+<p>অতিরিক্ত কমা'র ব্যবহারে ফলাফল কী আসে সেটা ঠিকমত বুঝতে পারাটা গুরুত্বপূর্ণ। নিজে কোড লেখার সময় array'র যে সদস্যগুলোর মান দিতে চান না, সরাসরি <code>undefined</code> মান বসিয়ে দিলে আপনার কোড সহজেই বুঝা যাবে আর ভবিষ্যতে কাজ করাও সহজ হবে।</p>
+
+<h3 id="বুলিয়ান_লিটারেল">বুলিয়ান লিটারেল</h3>
+
+<p>বুলিয়ান টাইপের দু'ধরণের লিটারেল আছেঃ <code>true</code> আর <code>false</code>।</p>
+
+<p>প্রিমিটিভ (যেগুলো অবজেক্ট না) <code>true</code> আর <code>false</code> বুলিয়ান ভ্যালু কে Boolean অবজেক্টের true আর false ভ্যালুর সাথে গুলিয়ে ফেলবেন না - এটি প্রিমিটিভ ভ্যালুগুলোর wrapper হিসেবেই কাজ করে। আরো তথ্যের জন্য <a href="/bn-BD/docs/JavaScript/Guide/Predefined_Core_Objects#Boolean_Object" title="/bn-BD/docs/JavaScript/Guide/Predefined_Core_Objects#Boolean_Object">বুলিয়ান অবজেক্ট</a> নিয়ে পড়ুন।</p>
+
+<h3 id="Integers">Integers</h3>
+
+<p>Integers (পূর্ণ সংখ্যা) কে ১০ (দশমিক), ১৬ (হেক্সাডেসিমাল) বা ৮(অক্টাল) এর ভিত্তিতে (base) প্রকাশ করা যায়।</p>
+
+<ul>
+ <li>দশমিক পূর্ণ সংখ্যার লিটারেল হচ্ছে এক বা একাধিক সংখ্যার ক্রম যার শুরুতে শূণ্য থাকতে পারবে না।</li>
+ <li>শুরুতে শূণ্য সহ এক বা একাধিক সংখ্যার ক্রম ব্যবহার করলে সেটি অক্টাল বলে গণ্য হয়। অক্টাল ভিত্তিতে শুধুমাত্র ০-৭ এই কয়টি ডিজিট ব্যবহার করা যায়।</li>
+ <li>শুরুতে 0x (অথবা 0X) সহ এক বা একাধিক সংখ্যার ক্রম ব্যবহার করলে সেটি হেক্সাডেসিমাল বলে গণ্য হয়। এই ভিত্তিতে 0-9 এই কয়টি ডিজিট ছাড়াও a-f বা A - F এই অক্ষরগুলো ব্যবহার করা যায়।</li>
+</ul>
+
+<p>অক্টাল লিটেরেল ব্যবহার নিরুতসাহিত আর ECMA-262 ৩য় সংস্করণে বাদ দিয়ে দেওয়া হয়েছে। অবশ্য পুরনো কোড যাতে চলতে পারে সেহেতু জাভাস্ক্রিপ্ট ১.৫ এ এখনো অক্টাল সমর্থন করে।</p>
+
+<p>Integer লিটেরেলের কিছু ব্যবহারঃ</p>
+
+<pre class="eval">0, 117 and -345 (দশমিক, base 10)
+015, 0001 and -077 (অক্টাল, base 8)
+0x1123, 0x00111 and -0xF1A7 (হেক্সাডেসিমাল, "hex" or base 16)
+</pre>
+
+<h3 id="ভগ্নাংশের_লিটারেল">ভগ্নাংশের লিটারেল</h3>
+
+<p>ভগ্নাংশে নিচের বিষয়গুলো থাকেঃ</p>
+
+<ul>
+ <li>চিহ্ন (sign) সহ/ছাড়া দশমিক ভিত্তির পূর্ণ সংখ্যা (শুরুতে ''+'' অথবা ''- '' চিহ্ন থাকতে পারে)</li>
+ <li>একটা দশমিক ফোটা ("."),</li>
+ <li>দশমিক ফোটার পরের অংশ (যেটা কিনা ১০-ভিত্তির পূর্ণ সংখ্যা),</li>
+ <li>এক্সপোনেন্ট (exponent)</li>
+</ul>
+
+<p>Exponent অংশ "e" অথবা "E" দিয়ে শুরু হয় আর এর পর থাকে ১০-ভিত্তির পূর্ণসংখ্যা, যেটার শুরুতে আবার + অথবা - চিহ্ন থাকতে পারে নাও পারে। একটা ভগ্নাংশ লিটেরেলে কমপক্ষে একটি ডিজিট (সংখ্যা) এবং হয় দশমিক ফোটা অথবা "e" (অথবা "E") থাকতে হবে।</p>
+
+<p>ভগ্নাংশ লিটেরেলের কিছু উদাহরণ হলঃ 3.1415, -3.1E12, .1e12, আর 2E-12।</p>
+
+<p>পরিষ্কার করে বলতে গেলে, সিন্ট্যাক্স হচ্ছেঃ</p>
+
+<pre class="eval">[digits][.digits][(E|e)[(+|-)]digits]
+</pre>
+
+<p>যেমনঃ</p>
+
+<pre class="eval">3.14
+2345.789
+.3333333333333333333
+</pre>
+
+<h3 id="অবজেক্ট_লিটেরেল">অবজেক্ট লিটেরেল</h3>
+
+<p>দ্বিতীয় বন্ধনীর ({}) ভেতর শূণ্য/এক/একাধিক নাম-ভ্যালু যুগল (name-value pairs) লিখে অবজেক্ট লিটেরেল তৈরি করা যায়। তবে কোন স্টেটমেন্টের শুরুতেই অবজেক্ট লিটেরেল ব্যবহার করা যায় না। এমনটা করলে ত্রুটি তৈরি হবে অথবা আপনি যেমনটা আশা করছিলেন সেরকম ফল পাবেন না - কারণ শুরুতেই { দেখে জাভাস্ক্রিপ্ট মনে করতে পারে আপনি ব্লক শুরু করছেন।</p>
+
+<p>নিচের উদাহরণে অবজেক্ট লিটেরেল দেখানো হয়েছে। <code>car</code> অবজেক্টের প্রথম সদস্য <code>myCar</code> নামের একটি প্রোপার্টি; দ্বিতীয় সদস্য <code>getCar</code> একটি ফাংশন <code>(CarTypes("Honda"));</code> ইনভোক করে, আর তৃতীয় সদস্য <code>special</code> ইতোমধ্যে তৈরি করা একটা ভ্যারিয়েবল ব্যবহার করে (<code>Sales</code>)।</p>
+
+<pre class="brush: js">var Sales = "Toyota";
+
+function CarTypes(name) {
+ return (name == "Honda") ?
+ name :
+ "Sorry, we don't sell " + name + "." ;
+}
+
+var car = { myCar: "Saturn", getCar: CarTypes("Honda"), special: Sales };
+
+console.log(car.myCar); // Saturn
+console.log(car.getCar); // Honda
+console.log(car.special); // Toyota
+</pre>
+
+<p>এছাড়াও, কোন প্রোপার্টির নাম হিসেবে সংখ্যা কিংবা স্ট্রিং লিটেরেল ব্যবহার করতে পারেন অথবা এক অবজেক্টের ভেতর আরেকটিকে নেস্ট করতে পারেন। নিচের উদাহরণে দেখুনঃ</p>
+
+<pre class="brush: js">var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };
+
+console.log(car.manyCars.b); // Jeep
+console.log(car[7]); // Mazda
+</pre>
+
+<p>দয়া করে খেয়াল করুনঃ</p>
+
+<pre class="brush: js">var foo = {a: "alpha", 2: "two"};
+console.log(foo.a); // alpha
+console.log(foo[2]); // two
+//console.log(foo.2); // Error: missing ) after argument list
+//console.log(foo[a]); // Error: a is not defined
+console.log(foo["a"]); // alpha
+console.log(foo["2"]); // two
+</pre>
+
+<h3 id="স্ট্রিং_লিটেরেল">স্ট্রিং লিটেরেল</h3>
+
+<p>স্ট্রিং লিটেরেল তৈরি হয় শূণ্য বা এর থেকে বেশি ক্যারেকটার ডবল-কোটেশন (") বা উদ্ধৃতি চিহ্ন বা single quotation (') চিহ্ন এর মধ্যে রাখলে। তবে double বা single যেই উদ্ধৃতি চিহ্ন-ই ব্যবহার করুন না কেন স্ট্রিং লিটেরেলের শুরুতে আর শেষে একই প্রকারের চিহ্ন ব্যবহার করতে হবে। নিচে কিছু স্ট্রিং লিটেরেলের উদাহরণ দেখুনঃ</p>
+
+<ul>
+ <li><code>"foo"</code></li>
+ <li><code>'bar'</code></li>
+ <li><code>"1234"</code></li>
+ <li><code>"one line \n another line"</code></li>
+ <li><code>"John's cat"</code></li>
+</ul>
+
+<p>স্ট্রিং লিটেরেলে আপনি স্ট্রিং অবজেক্টের যেকোন ফাংশন কল করতে পারবেন - জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে স্ট্রিং লিটেরেল কে অস্থায়ী অবজেক্টে কনভার্ট করে, এরপর মেথডটি কল করে, তারপর অস্থায়ী অবজেক্টটি ফেলে দেয়। আপনি <code>String.length </code>প্রোপার্টি ব্যবহার করতে পারেন স্ট্রিং লিটেরেলের ওপরঃ</p>
+
+<pre class="brush: js">"John's cat".length
+</pre>
+
+<p>স্ট্রিং অবজেক্ট ব্যবহারেরে বিশেষ কোন কারণ না থাকলে আপনার উচিত হবে স্ট্রিং লিটেরেল-ই ব্যবহার করা। বিস্তারিত দেখুনঃ <a href="/en-US/docs/JavaScript/Guide/Predefined_Core_Objects#String_Object" title="en-US/docs/JavaScript/Guide/Predefined Core Objects#String Object">String Object</a> ।</p>
+
+<h4 id="স্ট্রিং_এ_বিশেষ_অক্ষর_ব্যবহার">স্ট্রিং এ বিশেষ অক্ষর ব্যবহার</h4>
+
+<p>গতানুগতিক অক্ষরের পাশাপাশি বিশেহ অক্ষ্র ও স্ট্রিং এ ব্যবহার করতে পারবেন, যেমনটা দেখানো হয়েছে উদাহরণেঃ</p>
+
+<pre class="brush: js">"one line \n another line"
+</pre>
+
+<p>নিচের টেবিলে জাভাস্ক্রিপ্টের বিশেষ অক্ষরগুলো যেগুলো স্ট্রিং এ ব্যবহার করতে পারবেন সেগুলো দেখানো হয়েছেঃ</p>
+
+<table class="standard-table">
+ <caption>টেবিল ২.১ জাভাস্ক্রিপ্টের বিশেষ অক্ষর</caption>
+ <thead>
+ <tr>
+ <th scope="col">অক্ষর</th>
+ <th scope="col">অর্থ</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>\b</code></td>
+ <td>Backspace</td>
+ </tr>
+ <tr>
+ <td><code>\f</code></td>
+ <td>Form feed</td>
+ </tr>
+ <tr>
+ <td><code>\n</code></td>
+ <td>নতুন লাইন</td>
+ </tr>
+ <tr>
+ <td><code>\r</code></td>
+ <td>Carriage return</td>
+ </tr>
+ <tr>
+ <td><code>\t</code></td>
+ <td>Tab</td>
+ </tr>
+ <tr>
+ <td><code>\v</code></td>
+ <td>Vertical tab</td>
+ </tr>
+ <tr>
+ <td><code>\'</code></td>
+ <td>ঊর্ধকমা or single quote</td>
+ </tr>
+ <tr>
+ <td><code>\"</code></td>
+ <td>Double quote</td>
+ </tr>
+ <tr>
+ <td><code>\\</code></td>
+ <td>Backslash character (\).</td>
+ </tr>
+ <tr>
+ <td><code>\<em>XXX</em></code></td>
+ <td>Latin-1 এনকোডিং সহ অক্ষরটি 0 এবং 377 এর মধ্যে তিনটি অক্টাল সংখ্যা দ্বারা XXX নির্দিষ্ট করা হয়েছে। উদাহরণস্বরূপ, \251 হল কপিরাইট প্রতীকের অকটাল ক্রম।</td>
+ </tr>
+ <tr>
+ <td><code>\x<em>XX</em></code></td>
+ <td>Latin-1 এনকোডিং সহ অক্ষরটি 00 এবং FF এর মধ্যকার সংখ্যাগুলি দ্বারা XXX নির্দিষ্ট করা হয়েছে। উদাহরণস্বরূপ, \xA9 হল কপিরাইট প্রতীকের হেক্সাডেসিমেল ক্রম।</td>
+ </tr>
+ <tr>
+ <td><code>\u<em>XXXX</em></code></td>
+ <td>ইউনিকোড অক্ষর চারটি হেক্সাডেসিমেল সংখ্যা দ্বারা XXXX নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, \u00A9 হল কপিরাইট প্রতীকের ইউনিকোড ক্রম। {{anch("Unicode escape sequences")}} এ দেখুন.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="অক্ষর_এস্কেপ_(escape)_করা">অক্ষর এস্কেপ (escape) করা</h4>
+
+<p>যেই অক্ষরগুলো টেবিল ২.১ এ দেখানো হয়নি সেগুলোর সামনের ব্যাক-স্ল্যাশ অগ্রাহ্য করা হয়। কিন্তু এই ব্যবহার নিরুতসাহিত করা হয় এবং করাও উচিত নয়।</p>
+
+<p>স্ট্রিং এর মধ্যে উদ্ধৃতি চিহ্ন দিতে পারেন এটির সামনে ব্যাক-স্ল্যাশ ব্যবহার করে। এটি-ই <em>এসকেপ</em> করা (উদ্ধৃতি চিহ্ন কে) হিসেবে পরিচিত। যেমনঃ</p>
+
+<pre class="brush: js">var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service.";
+console.log(quote);
+</pre>
+
+<p>এর ফলাফল হবে এমনঃ</p>
+
+<pre class="eval">He read "The Cremation of Sam McGee" by R.W. Service.
+</pre>
+
+<p>অবশ্য স্ট্রিং এ ব্যাক-স্ল্যাশ ব্যবহার করতে একেও এসকেপ করতে হবে! যেমন, স্ট্রিং এ <code>c:\temp</code> মান ব্যবহার করতে চাইলেঃ</p>
+
+<pre class="brush: js">var home = "c:\\temp";
+</pre>
+
+<p>লাইন-বিরতি এসকেপ করতে পারেন সেগুলোর আগে ব্যাক-স্ল্যাশ ব্যবহার করে। ব্যাক-স্ল্যাশ আর লাইন-বিরতি (কীবোর্ডের এন্টার চেপে লাইন বিরতি দেওয়া যায়) দুটোই স্ট্রিং এর মান থেকে সরিয়ে নেওয়া হবেঃ</p>
+
+<pre class="brush: js">var str = "this string \
+is broken \
+across multiple\
+lines."
+<span class="objectBox objectBox-text">console.log(str);</span> // <span class="objectBox objectBox-text">this string is broken across multiplelines.</span>
+</pre>
+
+<p>যদিও জাভাস্ক্রিপ্টে "heredoc" সিন্ট্যাক্স  নেই, আপনি কাছাকাছি কিছু একটা পেতে পারেন লাইন-বিরতি এসকেপ ব্যবহার করে আর এসকেপ করা লাইনব্রেক প্রতি লাইনের শেষে দিয়েঃ</p>
+
+<pre class="brush: js">var poem =
+"Roses are red,\n\
+Violets are blue.\n\
+I'm schizophrenic,\n\
+And so am I."
+</pre>
+
+<h2 id="ইউনিকোড">ইউনিকোড</h2>
+
+<p>ইউনিকোড হচ্ছে বিশ্বব্যাপী স্বীকৃত ক্যারেকটার-কোডিং স্ট্যান্ডার্ড, কোন ভাষা (যেমনঃ বাংলা) লেখার জন্য ব্যবহৃত হয়। আমেরিকা, ইউরোপ, মধ্যপ্রাচ্য, আফ্রিকা, ভারত, এশিয়া, প্যাসিফিকা সব অঞ্চলের ভাষার-ই সাপোর্ট আছে ইউনিকোডে। শুধু তাই নয় ঐতিহাসিক পাণ্ডুলিপি আর টেকনিক্যাল সিম্বল দেওয়ার ও ব্যবস্থা আছে। পৃথিবীর বিভিন্ন ভাষায় লেখালেখির আদান-প্রদান, প্রসেস করা, উপ্সথাপন করা সবকিছুই ইউনিকোড দিয়ে করা যায় (যেমনটা আপনারা এখন এই লেখাটা বাংলায় পড়তে পারছেন ইউনিকোড এর জন্য-ই!)। এছাড়া সাধারণ গাণিতিক আর টেকনিকাল চিহ্ন-ও দেওয়া যায়। বহুভাষায় কম্পিউটিং করার যে আন্তর্জাতিক সমস্যা ছিল, ইউনিকোড তার সমাধান করেছে। অবশ্য নতুন কিছু ভাষা বা প্রাগৈতিহাসিক পাণ্ডুলিপির জন্য সাপোর্ট নাও পেতে পারেন।</p>
+
+<p>সব এনকোডিং এর জন্যে-ই ইউনিকোড বর্ণমালা ব্যবহার করা যায়। ASCII (American Standard Code for Information Interchange) বর্ণমালার ওপর ভিত্তি করে ইউনিকোড মডেল করা হয়েছে। প্রত্যেকটি হরফের জন্য এটি একটি সংখ্যা আর নাম ব্যবহার করে। এই সংখ্যাটি'র বিট রিপ্রেজেন্টেশন ও ক্যারেক্টার এনকোডিং এ বলা থাকে। ১৬-বিটের সংখ্যাটি হেক্সাডেসিমালে প্রকাশ করা হয়, আর এর সামনে থাকে U অক্ষরটি। যেমন, U+0041 দিয়ে A বুঝানো হয়। আর এই অক্ষরটির অনন্য নাম হল LATIN CAPITAL LETTER A।</p>
+
+<p><strong>জাভাস্ক্রিপ্টের ১.৩ এর আগের ভার্সনে ইউনিকোড সাপোর্ট নেই।</strong></p>
+
+<h3 id="ASCII_এবং_ISO_এর_সাথে_ইউনিকোড_কম্প্যাটিবিলিটি">ASCII এবং ISO এর সাথে ইউনিকোড কম্প্যাটিবিলিটি</h3>
+
+<p>ইউনিকোড আন্তর্জাতিক স্ট্যান্ডার্ড ISO/IEC 10646-1; 1993 দ্বারা সম্পূর্ণভাবে সমর্থিত, যেটা কিনা ISO 10646 এর অংশ।</p>
+
+<p>বেশকিছু ইউনিকোড স্ট্যান্ডার্ড (UTF-8, UTF-16 এবং ISO UCS-2 সহ) ব্যবহার করা হয় ইউনিকোড কে বিট হিসেবে দেখানোর জন্য। (মানে ব্যবহারিক প্রয়োগের জন্য!)</p>
+
+<p>ইউনিকোডের UTF-8 এনকোডিং ASCII বর্ণমালার সাথে সমর্থিত আর অনেক প্রোগ্রামেই একে ব্যবহার করা হয়। প্রথম ১২৮ টি ইউনিকোড অক্ষর দিয়ে ASCII অক্ষরগুলোকে প্রকাশ করা হয়, আর এগুলোর বাইট-মান ও একই (ASCII তে যেই মান ছিল) রাখা হয়েছে। U+0020 থেকে শুরু করে U+007E পর্যন্ত ইউনিকোড অক্ষরগুলো 0x20 থেকে  0x7E পর্যন্ত ASCII অক্ষরগুলোকে নির্দেশ করে। ASCII এর সাথে পার্থক্য হল ASCII ল্যাটিন বর্ণমালা সমর্থন করে (আর ৭ বিটের ক্যারেক্টার সেট দিয়ে তৈরি), যেখানে UTF-8 ১ থেকে ৪ টি অক্টেট ("অক্টেট" মানে হল ৮ বিট, বা ১ বাইট) দিয়ে প্রতিটি অক্ষর নির্দেশ করে। তাই, কয়েক মিলিয়ন অক্ষর UTF-8 দিয়ে দেখানো সম্ভব। আরো একটি বিকল্প এনকোডিং স্ট্যান্ডার্ড হল UTF-16 যেখানে প্রতিটি অক্ষর এর জন্য ২টি করে অক্টেট ব্যবহার করা হয়। এসকেপ সিকোয়েন্স ব্যবহার করে UTF-16 দিয়ে ইউনিকোড রেঞ্জে যত অক্ষর আছে সবগুলো দেখানো যায়, ৪টি অক্টেট ব্যবহার করে। ISO UCS-2 (Universal Character Set) দু'টি অক্টেট ব্যবহার করে।</p>
+
+<p>UTF-8/ইউনিকোডের জন্য জাভাস্ক্রিপ্ট আর নেভিগেটরের সাপোর্ট থাকার ফলাফল স্বরূপ আপনি ল্যাটিন নয়-এমন, আন্তর্জাতিক আর এলাকাভিত্তিক, আপনার নিজের ভাষার বর্ণমালা ব্যবহার করতে পারছেন, আরো পারছেন বিশেষ সব টেকনিকাল হরফ ব্যবহার করতে। বহুভাষায় ভাব প্রকাশ সমর্থন করার জন্য ইউনিকোড একটি স্ট্যান্ডার্ড পদ্ধতি। যেহেতু ইউনিকোডের UTF-8 এনকোডিং ASCII সমর্থন করে, প্রোগ্রামগুলো ASCII বর্ণমালাও ব্যবহার করতে পারে ইউনিকোডের পাশাপাশি, আর ASCII নয় এমন বর্ণমালা (যেমন, বাংলা!) ও ব্যবহার করতে পারেন জাভাস্ক্রিপ্টের কমেন্টে, স্ট্রিং লিটেরেলে, ভ্যারিয়েবলের আইডেন্টিফায়ারে, রেগুলার এক্সপ্রেশনে।</p>
+
+<h3 id="ইউনিকোড_এসকেপ_সিকোয়েন্স">ইউনিকোড এসকেপ সিকোয়েন্স</h3>
+
+<p>আপনি স্ট্রিং লিটেরেল, রেগুলার এক্সপ্রেশন আর ভ্যারিয়েবলের আইডেন্টিফায়ারে ইউনিকোড এসকেপ সিকোয়েন্স ব্যবহার করতে পারেন। এসকেপ সিকোয়েন্সে ৬টি ASCII অক্ষর থাকেঃ \u আর ৪-ডিজিটের হেক্সাডেসিমেল সংখ্যা। যেমনঃ \u00A9 দিয়ে কপিরাইট চিহ্নটিকে প্রকাশ করা হয়। আর বুঝতেই পারছেন, প্রতিটি এসকেপ সিকোয়েন্স দিয়ে ১টি মাত্র অক্ষর প্রকাশ করা হয়।</p>
+
+<p>নিচের কোডে দেখিয়েছি কিভাবে কপিরাইট চিহ্ন আর "Netscape Communications" স্ট্রিংটি তৈরি করা হয়েছেঃ</p>
+
+<pre class="brush: js">var x = "\u00A9 Netscape Communications";</pre>
+
+<p>নিচের সারণিতে প্রায়-ই ব্যবহার করা হয় এমন কিছু বিশেষ অক্ষর আর তাদের ইউনিকোড ভ্যালু দেওয়া হলঃ</p>
+
+<table class="standard-table">
+ <caption>সারণী ২.২ বিশেষ অক্ষরের ইউনিকোড মান</caption>
+ <thead>
+ <tr>
+ <th scope="col">প্রকৃতি</th>
+ <th scope="col">ইউনিকোড মান</th>
+ <th scope="col">নাম</th>
+ <th scope="col">ফর্ম্যাট</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td rowspan="4">White space values</td>
+ <td>\u0009</td>
+ <td>Tab</td>
+ <td>&lt;TAB&gt;</td>
+ </tr>
+ <tr>
+ <td>\u000B</td>
+ <td>Vertical Tab</td>
+ <td>&lt;VT&gt;</td>
+ </tr>
+ <tr>
+ <td>\u000C</td>
+ <td>Form Feed</td>
+ <td>&lt;FF&gt;</td>
+ </tr>
+ <tr>
+ <td>\u0020</td>
+ <td>Space</td>
+ <td>&lt;SP&gt;</td>
+ </tr>
+ <tr>
+ <td rowspan="2">Line terminator values</td>
+ <td>\u000A</td>
+ <td>Line Feed</td>
+ <td>&lt;LF&gt;</td>
+ </tr>
+ <tr>
+ <td>\u000D</td>
+ <td>Carriage Return</td>
+ <td>&lt;CR&gt;</td>
+ </tr>
+ <tr>
+ <td rowspan="5">Additional Unicode escape sequence values</td>
+ <td>\u0008</td>
+ <td>Backspace</td>
+ <td>&lt;BS&gt;</td>
+ </tr>
+ <tr>
+ <td>\u0009</td>
+ <td>Horizontal Tab</td>
+ <td>&lt;HT&gt;</td>
+ </tr>
+ <tr>
+ <td>\u0022</td>
+ <td>Double Quote</td>
+ <td>"</td>
+ </tr>
+ <tr>
+ <td>\u0027</td>
+ <td>Single Quote</td>
+ <td>'</td>
+ </tr>
+ <tr>
+ <td>\u005C</td>
+ <td>Backslash</td>
+ <td>\</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>জাভাস্ক্রিপ্টে ব্যবহৃত এসকেপ সিকোয়েন্স আর জাভাতে এর ব্যবহারের মাঝে পার্থক্য আছে। জাভাস্ক্রিপ্টে কখনোই এস্কেপ সিকোয়েন্স কে বিশেষ কোন অক্ষর হিসেবে ধরা হয় না প্রথমে। যেমন, কোন স্ট্রিং এর ভেতর লাইন-শেষ-করার-জন্য কোন এসকেপ সিকোয়েন্স ব্যবহার করলে সেটি লাইন বিরতি দেয় না, যতক্ষণ না ফাংশন একে ব্যবহার করছে। জাভাস্ক্রিপ্ট কমেন্টে ব্যবহার করা যেকোন এসকেপ সিকোয়েন্স উপেক্ষা করে। যদি কোন এসকেপ সিকোয়েন্স এক-লাইনের কমেন্টে ব্যবহার করা হয়, জাভা একে ইউনিকোড অক্ষর হিসেবে নেয়। স্ট্রিং লিটেরেলের ক্ষেত্রে জাভা কম্পাইলার প্রথমেই এসকেপ সিকোয়েন্সকে ইন্টারপ্রেট করে। যেমন, লাইন-বিরতি এস্কেপ অক্ষর (যেমন \u000A) যদি জাভায় ব্যবহার করেন, স্ট্রিং লিটেরেল টি ঐখানেই শেষ হয়ে যাবে। ফলস্বরূপ ত্রুটি তৈরি হবে কারণ জাভার স্ট্রিং লিটেরেলে লাইন-বিরতি চিহ্ন ব্যবহার করা যায় না। লাইন ফিড দেওয়ার জন্য জাভাতে আপনাকে \n ব্যবহার করতে হবে। জাভাস্ক্রিপ্টে এই \n এর কাজ এসকেপ সিকোয়েন্স দিয়েই করতে পারবেন।</p>
+
+<h3 id="জাভাস্ক্রিপ্ট_ফাইলে_ইউনিকোড_অক্ষর">জাভাস্ক্রিপ্ট ফাইলে ইউনিকোড অক্ষর</h3>
+
+<p><a href="/en-US/docs/Gecko" title="en-US/docs/Gecko">Gecko</a> এর পুরোনো ভার্সন ধরে নিত XUL যেই জাভাস্ক্রিপ্ট ফাইল লোড করে, সেগুলো ল্যাটিন-১ ক্যারেক্টার এনকোডিং এ আছে।  Gecko ১.৮ আর পরের ভার্সনগুলোতে ফাইলটা যেই এনকোডিং এ থাকবে, সেই এনকোডিং ই ব্যবহার করা হয়। <a href="/en-US/docs/International_characters_in_XUL_JavaScript" title="en-US/docs/International_characters_in_XUL_JavaScript">XUL জাভাস্ক্রিপ্টে আন্তর্জাতিক অক্ষর</a> দেখুন আরো তথ্যের জন্য।</p>
+
+<h3 id="ইউনিকোড_ব্যবহার_করে_অক্ষর_দেখানো">ইউনিকোড ব্যবহার করে অক্ষর দেখানো</h3>
+
+<p>বিভিন্ন ভাষার অক্ষর কিংবা টেকনিকাল চিহ্ন দেখানোর জন্য ইউনিকোড ব্যবহার করুন। অক্ষরগুলো ঠিকমত দেখানোর জন্য ক্লায়েন্ট (যেমন মজিলা ফায়ারফক্স বা নেটস্কেপ) এর ইউনিকোড সমর্থন করা প্রয়োজন। এছাড়াও, ক্লায়েন্টের কাছে উপযুক্ত ইউনিকোড ফন্ট থাকাটাও দরকার, আর ক্লায়েন্ট যেই প্ল্যাটফর্মে আছে সেখানেও ইউনিকোড সমর্থন করতে হবে। প্রায়ই দেখা যায় ইউনিকোড ফন্ট যেটি ব্যবহার করা হয়েছে সেটি সব ইউনিকোড অক্ষর দেখায় না। কিছু প্ল্যাটফর্ম, যেমন উইন্ডোজ ৯৫ এ ইউনিকোডের আংশিক সমর্থন রয়েছে।</p>
+
+<p>ASCII নয় এমন অক্ষর ইনপুট নেওয়ার জন্য ক্লায়েন্টকে ইউনিকোড হিসেবে ইনপুট নিতে হবে। শুধুমাত্র স্ট্যান্ডার্ড কীবোর্ড ব্যবহার করেই ইউনিকোড-সমর্থিত অতিরিক্ত অক্ষরগুলো ইনপুট নেওয়া সম্ভব নয়। মাঝে মাঝে, ইউনিকোড ইনপুট নেওয়ার একমাত্র উপায় হয়ে দাড়ায় ইউনিকোড এসকেপ সিকোয়েন্স ব্যবহার করে।</p>
+
+<p>ইউনিকোড নিয়ে আরো তথ্যের জন্য দেখুন <a class="external" href="http://www.unicode.org/">Unicode হোমপেইজ</a> আর ইউনিকোড স্ট্যান্ডার্ড, ২.০ সংস্করণ, প্রকাশকঃ Addison-Wesley, 1996।</p>
+
+<h2 id="তথ্যাদি">তথ্যাদি</h2>
+
+<ul>
+ <li><a class="external" href="http://0xcc.net/jsescape/" title="Text Escaping and Unescaping in JavaScript">জাভাস্ক্রিপ্টে লেখা এসকেপ করা আর এসকেপ-না-করা</a> – অক্ষর কে জাভাস্ক্রিপ্ট ইউনিকোড অক্ষরে রূপান্তরের ইউটিলিটি।</li>
+</ul>
diff --git a/files/bn/web/javascript/guide/index.html b/files/bn/web/javascript/guide/index.html
new file mode 100644
index 0000000000..856da74c7a
--- /dev/null
+++ b/files/bn/web/javascript/guide/index.html
@@ -0,0 +1,123 @@
+---
+title: জাভাস্ক্রিপ্ট গাইড
+slug: Web/JavaScript/Guide
+tags:
+ - JavaScript
+ - গাইড
+ - চ্যাপ্টার
+ - জাভাস্ক্রিপ্ট
+ - ভুমিকা
+translation_of: Web/JavaScript/Guide
+---
+<div>{{jsSidebar("জাভাস্ক্রিপ্ট গাইড")}}</div>
+
+<p class="summary">এই জাভাস্ক্রিপ্ট গাইডটি আপনাকে দেখাবে যে কিভাবে <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">জাভাস্ক্রিপ্ট</a> ব্যবহার করতে হয় এবং এই ল্যাঙ্গুয়েজ টি সম্পর্কে একটি ওভারভিউ প্রদান করবে। আপনি যদি আরও বেশি জানতে আগ্রহী হয়ে থাকেন, তাহলে দয়া করে <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">জাভাস্ক্রিপ্ট রেফেরেন্স</a> লিঙ্কটিতে প্রবেশ করুন।</p>
+
+<ul class="card-grid">
+ <li><span><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction">ভূমিকাঃ</a></span>
+
+ <p><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction#Where_to_find_JavaScript_information">এই গাইড সম্পর্কে কিছু কথা</a><br>
+ <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction#What_is_JavaScript">জাভাস্ক্রিপ্ট সম্পর্কে কিছু কথা</a><br>
+ <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction#JavaScript_and_Java">জাভা ও জাভাস্ক্রিপ্ট</a><br>
+ <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction#JavaScript_and_the_ECMAScript_Specification">(ইকমাস্ক্রিপ্ট) ECMAScript</a><br>
+ <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction#Getting_started_with_JavaScript">টুল সমুহ</a><br>
+ <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction#Hello_world">প্রথম জাভাস্ক্রিপ্ট প্রোগ্রামঃ Hello World</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Grammar_and_types">Grammar and types</a></span>
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Grammar_and_types#Basics">Basic syntax &amp; comments</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Grammar_and_types#Declarations">Declarations</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope">Variable scope</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_hoisting">Variable hoisting</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Grammar_and_types#Data_structures_and_types">Data structures and types</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Grammar_and_types#Literals">Literals</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Control_flow_and_error_handling">Control flow and error handling</a></span>
+ <p><code><a href="/bn-BD/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#if...else_statement">if...else</a></code><br>
+ <code><a href="/bn-BD/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#switch_statement">switch</a></code><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#Exception_handling_statements"><code>try</code>/<code>catch</code>/<code>throw</code></a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#Utilizing_Error_objects">Error objects</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#Promises">Promises</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration">Loops and iteration</a></span>
+ <p><code><a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration#for_statement">for</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration#while_statement">while</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration#do...while_statement">do...while</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration#break_statement">break</a>/<a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration#continue_statement">continue</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration#for...in_statement">for..in</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Loops_and_iteration#for...of_statement">for..of</a></code></p>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Functions">ফাংশন</a></span>
+
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Functions#Defining_functions">Defining functions</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Functions#Calling_functions">Calling functions</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Functions#Function_scope">Function scope</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Functions#Closures">Closures</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Functions#Using_the_arguments_object">Arguments</a> &amp; <a href="/bn-BD/docs/Web/JavaScript/Guide/Functions#Function_parameters">parameters</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Functions#Arrow_functions">Arrow functions</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Expressions_and_Operators">এক্সপ্রেশন এবং অপারেটর</a></span>
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment_operators">Assignment</a> &amp; <a href="/bn-BD/docs/Web/JavaScript/Guide/Expressions_and_Operators#Comparison_operators">Comparisons</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Expressions_and_Operators#Arithmetic_operators">Arithmetic operators</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise_operators">Bitwise</a> &amp; <a href="/bn-BD/docs/Web/JavaScript/Guide/Expressions_and_Operators#Logical_operators">logical operators</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Expressions_and_Operators#Conditional_(ternary)_operator">Conditional (ternary) operator</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Numbers_and_dates">Numbers and dates</a></span><a href="/bn-BD/docs/Web/JavaScript/Guide/Numbers_and_dates#Numbers"> Number literals</a>
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Numbers_and_dates#Number_object"><code>Number</code> object</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Numbers_and_dates#Math_object"><code>Math</code> object</a><br>
+ <a href="https://developer.mozilla.org/bn-BD/docs/Web/JavaScript/Guide/Numbers_and_dates#Date_object"><code>Date</code> object</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Text_formatting">Text formatting</a></span>
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Text_formatting#String_literals">String literals</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Text_formatting#String_objects"><code>String</code> object</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Text_formatting#Multi-line_template_strings">Template strings</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Text_formatting#Internationalization">Internationalization</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Regular_Expressions">রেগুলার এক্সপ্রেশন</a></p>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Indexed_collections">Indexed collections</a></span>
+
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Indexed_collections#Array_object">Arrays</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Indexed_collections#Array_comprehensions">Array comprehensions</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Indexed_collections#Typed_Arrays">Typed arrays</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Keyed_collections">Keyed collections</a></span>
+ <p><code><a href="/bn-BD/docs/Web/JavaScript/Guide/Keyed_collections#Map_object">Map</a></code><br>
+ <code><a href="/bn-BD/docs/Web/JavaScript/Guide/Keyed_collections#WeakMap_object">WeakMap</a></code><br>
+ <code><a href="/bn-BD/docs/Web/JavaScript/Guide/Keyed_collections#Set_object">Set</a></code><br>
+ <code><a href="/bn-BD/docs/Web/JavaScript/Guide/Keyed_collections#WeakSet_object">WeakSet</a></code></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Working_with_Objects">Working with objects</a></span>
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Working_with_Objects#Objects_and_properties">Objects and properties</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Working_with_Objects#Creating_new_objects">Creating objects</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_methods">Defining methods</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">Getter and setter</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Details_of_the_Object_Model">Details of the object model</a></span>
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Class-based_vs._prototype-based_languages">Prototype-based OOP</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Creating_the_hierarchy">Creating object hierarchies</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Property_inheritance_revisited">Inheritance</a></p>
+ </li>
+</ul>
+
+<ul class="card-grid">
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Iterators_and_Generators">Iterators and generators</a></span>
+
+ <p><a href="/bn-BD/docs/Web/JavaScript/Guide/Iterators_and_Generators#Iterators">Iterators</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Iterators_and_Generators#Iterables">Iterables</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators">Generators</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generator_comprehensions">Generator comprehensions</a></p>
+ </li>
+ <li><span><a href="/bn-BD/docs/Web/JavaScript/Guide/Meta_programming">Meta programming</a></span>
+ <p><code><a href="/bn-BD/docs/Web/JavaScript/Guide/Meta_programming#Proxies">Proxy</a></code><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Meta_programming#Handlers_and_traps">Handlers and traps</a><br>
+ <a href="/bn-BD/docs/Web/JavaScript/Guide/Meta_programming#Revocable_Proxy">Revocable Proxy</a><br>
+ <code><a href="/bn-BD/docs/Web/JavaScript/Guide/Meta_programming#Reflection">Reflect</a></code></p>
+ </li>
+</ul>
+
+<p>{{Next("Web/JavaScript/Guide/Introduction")}}</p>