diff --git a/.mume/parser.js b/.mume/parser.js index 81320019..a4137260 100755 --- a/.mume/parser.js +++ b/.mume/parser.js @@ -57,14 +57,14 @@ module.exports = {

ماریوتک

- من جعفررضائی، پلتفرم ماریوتک رو با هدف آموزش اصولی و رایگان، تاسیس کردم و این کتاب هم از مجموعه ماریوتک منتشر میشه. ما ماریوتک رو متعلق به همه می‌دونیم، پس اگه بعضی تایم‌های بیکاری داری که فکر می‌کنی می‌تونی باهامون توی این مسیر همراه باشی حتما بهم ایمیل بزن. + برادر من جعفر رضائی، پلتفرم ماریوتک رو با هدف آموزش اصولی و رایگان، تاسیس کرد و من هم این کتاب رو از مجموعه ماریوتک منتشر میکنم. ما ماریوتک رو متعلق به همه می‌دونیم، پس اگه بعضی تایم‌های بیکاری داری که فکر می‌کنی می‌تونی باهامون توی این مسیر همراه باشی حتما بهم ایمیل بزن. ایده‌های ماریوتک برای افزایش آگاهی و دانش تا حد امکان رایگان خواهد بود و تا به اینجا هم، تنها هزینه‌های چاپ برداشته شده و مابقی به موسسات خیریه داده شدن.

مطالب کتاب

- مطالب این کتاب می‌تونن تا حد بسیار خوبی دانش شما رو توی مسائل کلیدی مربوط به React.js و کتابخونه‌های پیرامون اون افزایش بدن. سوالات چالشی و کلیدی مطرح شده توی کتاب اکثرا سوالاتی هستند که توی مصاحبه‌های استخدامی پرسیده میشن و مسلط بودن به اونا می‌تونه شانس موفقیت شما برای موقعیت‌های شغلی که مدنظر دارین افزایش بده. + مطالب این کتاب می‌تونن تا حد بسیار خوبی دانش شما رو توی مسائل کلیدی مربوط جاواسکریپت و کتابخونه‌های پیرامون اون افزایش بدن. سوالات چالشی و کلیدی مطرح شده توی کتاب اکثرا سوالاتی هستند که توی مصاحبه‌های استخدامی پرسیده میشن و مسلط بودن به اونا می‌تونه شانس موفقیت شما برای موقعیت‌های شغلی که مدنظر دارین افزایش بده. مطالب این کتاب به دلیل ترجمه بودن تا حد زیادی قابل دستکاری نبودن و سعی شده تا حد امکان حق گردآورنده محفوظ باشه و با نسخه اصلی سورس که توسط Sudheer Jonna جمع‌آوری شده تفاوت معنایی نداشته باشه. بخشی از مطالب کتاب اصلی به خاطر قدیمی بودن منقضی شده بودن و به عنوان مترجم بخش‌های زیادی از نمونه کدها و مطالب قدیمی تصحیح شدند. در آخر، امیدوارم همیشه شاد و خندان و خوشحال باشین. مخلصیم

diff --git a/book.html b/book.html index df149e2c..bcbc86ce 100644 --- a/book.html +++ b/book.html @@ -371,6 +371,8 @@ } .markdown-preview.markdown-preview .a4 img { max-height: 300px; + text-align: center; + margin: 10px 0; } .markdown-preview.markdown-preview ol { font-family: BYekan; @@ -498,1711 +500,2158 @@
-

مجموعه سوال و جواب‌های جاواسکریپتی

+

مجموعه سوال و جواب‌های جاواسکریپتی

-

اگه خوشتون اومد به گیت‌هابمون مراجعه کنین و بهمون ⭐️ بدین. اگه هم قصد مشارکت داشتید خیلی خوشحال می‌شیم 😃

+

اگه از کتاب خوشتون اومد به گیت‌هابمون مراجعه کنین و بهمون ⭐️ بدین. اگه هم قصد مشارکت داشتید خیلی خوشحال می‌شیم 😃 http://github.com/mariotek

-

دانلود کتاب به فرمت‌های PDF/Epub

-

می‌تونید از بخش ریلیزهای گیت‌هاب دانلود کنین(این لینک).

-

پیش گفتار

-

پرسش و پاسخ‌های پیش رو، حاصل گردآوری سوالات پرتکراری‌ست که در جلسات مصاحبه‌ برای موقعیت‌‌های کاری مرتبط با جاواسکریپت پرسیده می‌شه.
-امیدواریم که با مطالعه این سوالات توی مصاحبه‌های شغلی‌تون موفق باشین و به دانش‌تون اضافه بشه.

-
-

فهرست

+

دانلود کتاب به فرمت‌های PDF/Epub

+

می‌تونین خیلی راحت نسخه آنلاین کتاب استفاده کنین یا اگه به فایل کتاب می‌خوایین دسترسی داشته باشین، از بخش ریلیزهای گیت‌هاب به فرمت‌های مختلف آخرین نسخه کتاب رو می‌تونین دریافت کنین.

+

فهرست

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ردیف سوالصفحه
1 روش‌های ایجاد objects توی جاواسکریپت چیا هستن؟
2 زنجیره prototype چیه؟
3 تفاوت‌های بین Call، Apply و Bind چیا هستن؟
4 فرمت JSON چیه و عملیات‌های معمول بر روی آن چیا هستن؟
5 هدف از متد slice روی آرایه‌ها چیه؟
6 هدف از متد splice روی آرایه‌ها چیه؟
7 تفاوت متدهای slice و splice چیا هستن؟
8 تفاوت‌های Object و Map چیا هستن؟
9 تفاوت‌های بین عملگرهای == و === چیا هستن؟
10 توابع lambda یا arrow-function چی هستن؟
11 یه تابع first-class چجور تابعی‌ـه؟
12 یه تابع first-order چجور تابعی‌ـه؟
13 یه تابع higher-order چجور تابعی‌ـه؟
14 یه تابع unary چجور تابعی‌ـه؟
15 currying توابع یعنی چی؟
16 چه توابعی pure هستن؟
17 هدف از کلمه کلیدی let چیه؟
18 تفاوت‌های کلمات کلیدی let و var چیا هستن؟
19 دلیل انتخاب کلمه کلیدی let چیه؟
20 چطوری می‌تونیم توی بلوک مربوط به switch بدون دریافت خطا متغیر تعریف کنیم؟
21 Temporal-Dead-Zone چیه؟
22 IIFE(توابع بلافاصله صدا زده شده) چی هستن؟
23 مزایای استفاده از moduleها چیه؟
24 Memoization چیه؟
25 Hoisting چیه؟
26 Classها توی ES6 چی هستن؟
27 Closureها چیا هستن؟
28 Moduleها چیا هستن؟
29 چرا به moduleها نیاز داریم؟
30 توی جاواسکریپت scope چیه و چیکار می‌کنه؟
31 service-worker چیه؟
32 توی service-worker چطوری می‌شه DOM رو دستکاری کرد؟
33 چطوری می‌تونیم بین ریست شدن‌های service-worker داده‌های مورد نظرمون رو مجدد استفاده کنیم؟
34 IndexedDB چیه؟
35 Web-storage چیه؟
36 Post-message چیه؟
37 Cookie چیه؟
38 چرا به cookie نیاز داریم؟
39 گزینه‌های قابل تنظیم توی cookie چیا هستن؟
40 چطوری می‌شه یه cookie رو حذف کرد؟
41 تفاوت‌های بین cookie، local-storage و session-storage چیا هستن؟
42 تفاوت‌های بین localStorage و sessionStorage چیا هستن؟
43 چطوری به web-storage دسترسی پیدا می‌کنی؟
44 چه متد‌هایی روی session-storage قابل استفاده هستن؟
45 رخداد storage چیه و چطوری ازش استفاده می‌کنیم؟
46 چرا به web-storage نیاز داریم؟
47 چطوری می‌تونیم پشتیبانی از web-storage توسط مرورگر رو بررسی کنیم؟
48 چطوری می‌تونیم پشتیبانی از web-worker توسط مرورگر رو بررسی کنیم؟
49 یه مثال از web-workerها می‌تونی بزنی؟
50 محدودیت‌های web-workerها روی DOM چیا هستن؟
51 Promise چیه؟
52 چرا به promise نیاز داریم؟
53 سه تا وضعیت ممکن برای یه promise چیا هستن؟
54 توابع callback چی هستن؟
55 چرا به توابع callback نیاز داریم؟
56 Callback-hell یا جهنم توابع callback چیه؟
57 Server-sent-events(SSE) چیه؟
58 چطوری می‌تونیم اعلان‌های server-sent-event رو دریافت کنیم؟
59 چطوری می‌تونیم پشتیبانی مرورگر برای SSE رو بررسی کنیم؟
60 کدوم توابع روی SSE وجود دارن؟
61 اصلی‌ترین قوانین promiseها چیا هستن؟
62 Callback توی callback چطوری رخ میده؟
63 زنجیره promiseها چیه؟
64 کاربرد متد promise.all چیه؟
65 هدف از متد race روی promise چیه؟
66 حالت strict توی جاواسکریپت چی کار می‌کنه؟
67 چرا به حالت strict نیاز داریم؟
68 چطوری می‌تونیم حالت strict رو فعال کنیم؟
69 هدف از عملگر نقیض دوتایی(!!) چیه؟
70 هدف از عملگر delete چیه؟
71 عملگر typeof چیکار می‌کنه؟
72 undefined چیه و چه زمانی undefined می‌گیریم؟
73 null چیه؟
74 تفاوت‌های بین null و undefined چیا هستن؟
75 eval چیه؟
76 تفاوت‌های بین window و document چیا هستن؟
77 توی جاواسکریپت چطوری می‌تونیم به history دسترسی داشته باشیم؟
78 انواع داده‌های جاواسکریپت کدوما هستن؟
79 isNaN چیه و چیکار می‌کنه؟
80 تفاوت‌های بین undeclared و undefined چیا هستن؟
81 کدوم متغیرها عمومی هستن؟
82 مشکلات متغیرهای عمومی چیا هستن؟
83 مقدار NaN چیه؟
84 هدف از تابع isFinite چیه؟
85 یه event-flow چیه؟
86 Event-bubbling چیه؟
87 Event-capturing چیه؟
88 چطوری می‌شه یه فرم رو با استفاده از جاواسکریپت ثبت کرد؟
89 چطوری می‌شه به اطلاعات مربوط به سیستم عامل کاربر دسترسی داشت؟
90 تفاوت‌های بین رخدادهای document-load و DOMContentLoaded چیا هستن؟
91 تفاوت‌های بین objectهای native، host و user چیا هستن؟
92 کدوم ابزار و تکنیک‌ها برای دیباگ کردن برنامه جاواسکریپتی استفاده میشن؟
93 مزایا و معایب استفاده از promiseها به جای callback چیا هستن؟
94 تفاوت‌های بین attribute و property روی DOM چیا هستن؟
95 سیاست same-origin چیه؟
96 هدف استفاده از void 0 چیه؟
97 جاواسکریپت یه زبان تفسیری هست یا کامپایلری؟
98 آیا جاواسکریپت یه زبان حساس به بزرگی و کوچکی(case-sensitive) حروف است؟
99 ارتباطی بین Java و JavaScript وجود داره؟
100 Eventها چی هستن؟
101 کی جاواسکریپت رو ساخته؟
102 هدف از متد preventDefault چیه؟
103 کاربرد متد stopPropagation چیه؟
104 مراحلی که موقع استفاده از return false توی یه event-handler رخ میده چیا هستن؟
105 BOM چیه؟
106 موارد استفاده از setTimeout کدوما هستن؟
107 موارد استفاده از setInterval کدوما هستن؟
108 چرا جاواسکریپت رو به عنوان یه زبان تک thread می‌شناسن؟
109 Event-delegation چیه؟
110 ECMAScript چیه؟
111 JSON چیه؟
112 قوانین فرمت JSON کدوما هستن؟
113 هدف از متد JSON.stringify چیه؟
114 چطوری می‌تونیم یه رشته(string) JSON رو تجزیه کنیم؟
115 چرا به JSON نیاز داریم؟
116 PWAها چی هستن؟
117 هدف از متد clearTimeout چیه؟
118 هدف از متد clearInterval چیه؟
119 توی جاواسکریپت، چطوری می‌شه به یه صفحه جدید redirect انجام داد؟
120 چطوری بررسی می‌کنین که یه string شامل یه substring هست یا نه؟
121 توی جاواسکریپت، چطوری مقدار یه آدرس email رو اعتبارسنجی می‌کنین؟
122 چطوری می‌تونیم مقدار آدرس url جاری رو بخونیم؟
123 ویژگی‌های مختلف url روی object مربوط به history کدوما هستن؟
124 توی جاواسکریپت چطوری می‌تونیم مقدار یه query-string رو بخونیم؟
125 چطوری می‌تونیم بررسی کنیم که آیا یه پراپرتی روی آبجکت وجود داره یا نه؟
126 ری روی یه object حلقه میزنی؟
127 چطوری تست می‌کنی که یه object خالیه؟
128 arguments object چیه؟
129 چطوری حرف اول یه رشته رو به حرف بزرگ تبدیل می‌کنی؟
130 مزایا و معایب حلقه for چیا هستن؟
131 چطوری تاریخ جاری رو توی جاواسکریپت نشون میدی؟
132 چطوری دو تا date object رو با هم مقایسه می‌کنی؟
133 چطوری بررسی می‌کنی که یه رشته با یه رشته دیگه شروع می‌شه؟
134 چطوری یه رشته رو trim می‌کنی؟
135 توی جاواسکریپت چطوری می‌تونیم یه زوج مرتب از key یه valueها بسازیم؟
136 آیا عبارت '!--' عملگر خاصی هست؟
137 چطوری می‌تونیم به متغیرهامون مقادیر اولیه بدیم؟
138 چطوری می‌تونیم متن‌های چند خطی درست کنیم؟
139 مدل app-shell چیه؟
140 چطوری می‌تونیم روی یه تابع property اضافه کنیم؟
141 چطوری می‌تونیم تعداد پارامترهای ورودی یه تابع رو به دست بیاریم؟
142 Polyfill چیه؟
143 عبارات Break و continue چی هستن؟
144 توی جاواسکریپت labelها چیکار می‌کنن؟
145 مزایای declare کردن متغیرها در اوایل کد چیه؟
146 مزایای مقداردهی اولیه متغیرها چیه؟
147 روش توصیه شده برای ایجاد object چیه؟
148 چطوری می‌تونیم آرایه‌ JSON تعریف کنیم؟
149 چطوری می‌تونیم اعداد تصادفی تولید کنیم؟
150 می‌تونی یه تابع تولید اعداد تصادفی توی یه بازه مشخص بنویسی؟
151 Tree-shaking چیه؟
152 دلایل نیاز به tree-shaking کدوما هستن؟
153 آیا استفاده از eval توصیه می‌شه؟
154 Regular-Expression چیه؟
155 متدهای رشته که روی Regular-expression مجاز هستن کدوماست؟
156 توی Regex بخش modifiersها چیکار می‌کنه؟
157 پترن‌های regular-expression چیه؟
158 آبجکت RegExp چیه؟
159 چطوری روی یه رشته دنبال یه پترن RegExp می‌گردی؟
160 هدف از متد exec چیه؟
161 چطوری استایل‌های یه المنت HTML رو تغییر میدی؟
162 نتیجه عبارت 1+2+'3' چی می‌شه؟
163 عبارت debugger چیکار می‌کنه؟
164 هدف از breakpointها توی debugging چیه؟
165 آیا می‌تونیم از عبارت‌های رزرو شده در تعریف identifierها(اسم متغیر، کلاس و ...) استفاده کنیم؟
166 چطوری تشخیص بدیم که یه مرورگر mobile هست یا نه؟
167 چطوری بدون Regex تشخیص بدیم که یه مرورگر mobile هست یا نه؟
168 چطوری طول و عرض یه تصویر رو با جاواسکریپت به دست میاری؟
169 چطوری درخواست‌های synchronous HTTP بزنیم؟
170 چطوری درخواست‌های asynchronous HTTP بزنیم؟
171 چطوری یه تاریخ رو به یه تاریخ در timezone دیگه تبدیل کنیم؟
172 چه propertyهایی برای اندازه‌گیزی سایز window به کار میره؟
173 عملگر شرطی سه گانه توی جاواسکریپت چیه؟
174 آیا می‌شه روی عملگر شرطی زنجیره شرط‌ها رو اعمال کرد؟
175 روش‌های اجرای جاواسکریپت بعد از لود شدن صفحه کدوما هستن؟
176 تفاوت‌های بین proto و prototype کدوما هستن؟
177میتونی یه مثال از زمانی که واقعا به سمیکولون(😉 نیاز هست بزنی؟میتونی یه مثال از زمانی که واقعا به سمیکولون( ; ) نیاز هست بزنی؟
178 متد freeze چیکار می‌کنه؟
179 هدف از متد freeze چیه؟
180 چرا به متد freeze نیاز داریم؟
181 چطوری می‌تونیم زبان ترجیحی یه مرورگر رو تشخیص بدیم؟
182 چطوری می‌تونیم حرف اول همه کلمات یه رشته رو به حرف بزرگ تبدیل کنیم؟
183 چطوری می‌شه تشخیص داد که جاواسکریپت یه صفحه وب غیرفعال شده؟
184 عملگرهای پشتیبانی شده توسط جاواسکریپت کدوما هستن؟
185 پارامتر rest چیکار می‌کنه؟
186 اگه پارامتر rest رو به عنوان آخرین پارامتر استفاده نکنیم چی می‌شه؟
187 عملگرهای منطقی باینری توی جاواسکریپت کدوما هستن؟
188 عملگر spread چیکار می‌کنه؟
189 چطوری تشخیص میدی که یه آبجکت freeze شده یا نه؟
190 چطوری بررسی کنیم که دو تا مقدار(شامل آبجکت) با هم برابرن یا نه؟
191 هدف از متد is روی object چیه؟
192 چطوری propertyهای یه object رو به یه object دیگه کپی می‌کنی؟
193 کاربردهای ممتد assign چیه؟
194 آبجکت proxy چیه؟
195 هدف از متد seal چیه؟
196 کاربردهای متد seal چیه؟
197 تفاوت‌های بین متدهای freeze و seal چیا هست؟
198 چطوری تشخیص میدی که یه آبجکت seal شده یا نه؟
199 چطوری کلید و مقدارهای enumerable رو به دست میاری؟
200 تفاوت‌های بین متدهای Object.values و Object.entries چیا هست؟
201 چطوری لیست کلیدهای یه object رو بدست میاری؟
202 چطوری یه object با prototype درست می‌کنی؟
203 WeakSet چیه؟
204 تفاوت‌های بین WeakSet و Set کدوما هستن؟
205 لیست متدهایی که رو WeakSet قابل استفاده هستن رو می‌تونی بگی؟
206 WeakMap چیه؟
207 تفاوت‌های بین WeakMap و Map کدوما هستن؟
208 لیست متدهایی که رو WeakMap قابل استفاده هستن رو می‌تونی بگی؟
209 هدف از متد uneval چیه؟
210 چطوری یه URL رو encode می‌کنی؟
211 چطوری یه URL رو decode می‌کنی؟
212 چطوری محتوای یه صفحه رو پرینت می‌گیری؟
213 تفاوت‌های بین uneval و eval چیا هستن؟
214 تابع anonymous چیه؟
215 تفاوت تقدم بین متغیرهای local و global چطوریه؟
216 accessorهای جاواسکریپت چیکار می‌کنن؟
217 چطوری روی constructor یه Object یه مقدار تعریف می‌کنی؟
218 تفاوت‌های بین get و defineProperty چیا هست؟
219 مزایای استفاده از Getter و Setter چیه؟
220 می‌تونیم getter و setter رو با استفاده از متد defineProperty تعریف کنیم؟
221 هدف استفاده از switch-case چیه؟
222 چه قواعدی برای استفاده از swtich-case باید رعایت بشه؟
223 نوع داده‌های primitive کدوما هستن؟
224 روش‌های مختلف دسترسی به propertyهای object کدوما هستن؟
225 قوانین پارامترهای توابع کدوما هستن؟
226 آبجکت error چیه؟
227 چه موقعی خطای syntax دریافت می‌کنیم؟
228 عنوان خطاهای مختلف که روی error-object برمیگردن کدوما هستن؟
229 عبارات مختلف که در هنگام مدیریت error استفاده میشن کدوما هستن؟
230 دو نوع مختلف حلفه‌ها در جاواسکریپت کدوما هستن؟
231 nodejs چیه؟
232 آبجکت Intl چیه؟
233 چطوری تاریخ و زمان رو بر اساس زبان جاری سیستم کاربر نمایش بدیم؟
234 Iterator چیه؟
235 حلفه‌های synchronous(همزمان) چطوری کار می‌کنن؟
236 Event-loop چیه؟
237 Call-stack چیه؟
238 Event-queue چیه؟
239 Decorator چیه؟
240 مقادیر موجود روی آبجکت Intl کدوما هستن؟
241 عملگر Unary چیه؟
242 چطوری المنت‌های موجود تو یه آرایه رو مرتب می‌کنی؟
243 هدف از تابع مرتب‌سازی موقع استفاده از متد sort چیه؟
244 چطوری آیتم‌های یه آرایه رو معکوس مرتب کنیم؟
245 چطوری حداقل و حداکثر مقدار یه آرایه رو بدست بیاریم؟
246 چطوری حداقل و حداکثر مقدار یه آرایه رو بدون استفاده از متدهای Math بدست بیاریم؟
247 عبارت خالی چیه و هدف از استفاده ازش چیه؟
248 چطوری metadata یه ماژول رو بدست میاری؟ meta data of a module
249 عملگر comma چیه و چیکار می‌کنه؟
250 مزایای استفاده از عملگر comma چیه؟
251 Typescript چیه؟
252 تفاوت‌های بین javascript و typescript کدوما هستن؟
253 مزایای typescript نسبت به javascript چیاست؟
254 object-initializer چیه؟
255 متد constructor چیه؟
256 اگه متد constructor رو بیش از یه بار توی کلاس بنویسیم چی می‌شه؟
257 چطوری متد constructor کلاس والد رو صدا بزنیم؟
258 چطوری prototype یه object رو به دست میاری؟
259 اگه به متد getPrototype رشته پاس بدیم چی می‌شه؟
260 چطوری prototype یه object روی یه object دیگه ست کنیم؟
261 چطوری بررسی می‌کنی که یه object قابل extend هست یا نه؟
262 چطوری جلوی extend یه object رو بگیریم؟
263 روش‌های مختلف برای تبدیل یه object به object غیرقابل extend چیه؟
264 چطوری propertyهای متعددی رو روی یه object تعریف می‌کنی؟
265 منظور از MEAN توی جاواسکریپت چیه؟ javascript
266 Obfuscation توی جاواسکریپت چیه و چیکار می‌کنه؟ javascript
267 چه نیازی به Obfuscate کردن داریم؟
268 Minification چیه؟
269 مزایای minification یا کم حجم‌سازی چیه؟
270 تفاوت‌های بین Obfuscation و Encryption چیه؟
271 ابزارهای مختلف برای minification کدوما هستن؟
272 چطوری اعتبارسنجی فرم رو با javascript انجام میدی؟
273 چطوری اعتبارسنجی فرم رو بدون javascript انجام میدی؟
274 متدهای موجود روی DOM برای اعتبارسنجی کدوما هستن؟
275 مقادیر موجود روی DOM برای اعتبارسنجی کدوما هستن؟
276 مقادیر موجود روی input برای اعتبارسنجی کدوما هستن؟
277 یه مثال از استفاده ویژگی rangeOverflow می‌تونی بزنی؟
278 جاواسکریپت قابلیت استفاده از enum رو پیش‌فرض توی خودش داره؟
279 enum چیه؟
280 چطوری همه propertyهای یه object رو به دست بیاریم؟
281 چطوری get property descriptors of an object
282 گزینه‌هایی که موقع تعریف ویژگی object با descriptor داریم کدوما هستن؟
283 چطوری کلاس‌ها رو extend می‌کنی؟
284 چطوری آدرس صفحه رو بدون رفرش صفحه عوض کنیم؟
285 چطوری بررسی می‌کنی که یه آرایه یه مقدار مشخص رو داره یا نه؟
286 چطوری آرایه‌های scalar رو با هم مقایسه می‌کنی؟
287 چطوری می‌شه پارامترهای صفحه رو از متد GET گرفت؟
288 چطوری اعداد رو می‌شه سه رقم سه رقم جدا کرد؟
289 تفاوت‌ بین java و javascript چیه؟
290 آیا جاواسکریپت namespace رو پشتیبانی می‌کنه؟
291 چطوری namespace تعریف می‌کنی؟
292 چطوری می‌تونیم تکه کد جاواسکریپت داخل یه iframe رو از صفحه والد صدا بزنیم؟
293 چطوری می‌شه اختلاف timezone رو از آبجکت date بگیریم؟
294 چطوری فایل‌های CSS و JS رو به شکل داینامیک بارگذاری کنیم؟
295 روش‌های مختلف برای پیدا کردن elementها توی DOM کدوما هستن؟
296 jQuery چیه؟
297 موتور V8 جاواسکریپت چیه؟
298 چرا ما جاواسکریپت رو به عنوان یه زبان داینامیک می‌شناسیم؟
299 عملگر void چیکار می‌کنه؟
300 چطوری می‌شه نمایشگر موس صفحه رو به درحال لود تغییر داد؟
301 چطوری می‌شه یه حلقه بی‌نهایت درست کرد؟
302 چرا باید در استفاده از عبارت with تجدیدنظر کرد؟
303 خروجی این حلقه‌ها چی می‌شه؟
304 می‌تونی یه سری از ویژگی‌های ES6 رو اسم ببری؟
305 ES6 چیه؟
306 آیا می‌تونیم متغیرهای تعریف شده با let و const رو مجددا declare کنیم؟
307 آیا استفاده از const برای تعریف متغیر اونا رو immutable می‌کنه؟
308 parameterهای پیش‌فرض چی هستن؟
309 template-literalها چی هستن؟
310 چطوری رشته‌های چند خطی رو توی template-literalها می‌نویسیم؟
311 template-literal‌های تودرتو چی هستن؟
312 tagged-templateها چی هستن؟
313 رشته‌های خام چی هستن؟
314 assign کردن با destructuring چیه و چطوری انجام می‌شه؟
315 موقع assign کردن با destructuring چطوری می‌شه مقدار اولیه تعریف کرد؟
316 چطوری می‌تونیم مقدار یه آرایه رو با استفاده از destructuring-assignment تعویض کنیم؟
317 Enhanced-object-literalها چی هستن؟
318 importهای داینامیک چی هستن؟
319 کاربرد importهای داینامیک چیه؟
320 آرایه‌های نوع‌دار(typed-arrays) چیه؟
321 مزایای لودر ماژول‌ها چیه؟
322 collation چیه؟
323 عبارت for...of چیه؟
324 خروجی عملگر spread روی آرایه زیر چیه؟
325 آیا PostMessage امنه؟
326 مشکلات استفاده از postmessage با origin روی wildcard چیه؟
327 چطوری از دریافت postMessageهای ناخواسته و ناامن از طرف هکرها جلوگیری کنیم؟
328 می‌تونیم کلا postMessageها رو غیرفعال کنیم؟
329 آیا postMessageها به صورت synchronous و همزمان کار می‌کنن؟
330 پارادیم زبان جاواسکریپت چیه؟
331 تفاوت‌های بین جاواسکریپت داخلی و خارجی چیه؟
332 آیا جاواسکریپت سریعتر از اسکریپت‌های سمت سرور است؟
333 چطوری وضعیت چک بودن یه checkbox رو بدست بیاریم؟
334 هدف از عملگر double-tilde چیه؟
335 چطوری یه کاراکتر رو به کد ASCII تبدیل کنیم؟
336 ArrayBuffer چیه؟
337 خروجی کد زیر چی خواهد بود؟
338 هدف از Error-object چیه؟
339 هدف از EvalError-object چیه؟
340 خطاهایی که در حالت strict-mode رخ میدن ولی در غیر اون وجود ندارن کدوما هستن؟
341 آیا همه objectها دارای prototype هستن؟
342 تفاوت‌های بین parameter و argument چیه؟
343 هدف از متد some روی آرایه‌ها چیه؟
344 چطوری دو یا تعداد بیشتری از آرایه‌ها رو با هم ترکیب کنیم؟
345 تفاوت‌های بین Shallow و Deep کپی چیه؟
346 چطوری می‌تونیم به یه تعداد مشخص از یه رشته کپی کنیم؟
347 چطوری همه stringهای match شده با یه regular-expression رو برگردونیم؟
348 چطوری یه رشته رو از اول یا از آخر trim کنیم؟
349 خروجی کنسول زیر با عملگر unary چی می‌شه؟
350 آیا جاواسکریپت از mixinها استفاده می‌کنه؟
351 تابع thunk چیه و چیکار می‌کنه؟
352 thunkهای asynchronous چیکار می‌کنن؟
353 خروجی فراخوانی‌های توابع زیر چی می‌شه؟
354 چطوری همه خطوط جدید رو از یه رشته حذف کرد؟
355 تفاوت‌ بین reflow و repaint چیه؟
356 اگه قبل از یه آرایه عملگر نفی «!» بزاریم چی می‌شه؟
357 اگه دو تا آرایه رو با هم جمع ببندیم چی می‌شه؟
358 اگه عملگر جمع «+» روی قبل از مقادیر falsy قرار بدیم چی می‌شه؟
359 چطوری با استفاده از آرایه‌ها و عملگرهای منطقی می‌تونیم رشته self رو تولید کنیم؟
360 چطوری می‌تونیم مقادیر falsy رو از آرایه حذف کنیم؟
361 چطوری مقادیر تکراری رو از یه آرایه حذف کنیم؟
362 aliaseهای همزمان با destructuring چطوری کار می‌کنن؟
363 چطوری آیتم‌های یه آرایه رو بدون استفاده از متد map پیمایش کنیم؟
364 چطوری یه آرایه رو خالی کنیم؟
365 چطوری اعداد رو با تعداد رقم اعشار مشخص رند می‌کنی؟
366 ساده‌ترین روش برای تبدیل آرایه به object چیه؟
367 چطوری یه آرایه با یه سری داده درست کنیم؟
368 متغیرهای موجود روی آبجکت console کدوما هستن؟
369 می‌شه پیام‌های کنسول رو استایل‌دهی کرد؟
370 هدف از متد dir روی آبجکت console چیه؟
371 آیا می‌شه المنت‌های HTML رو توی console دیباگ کرد؟
372 چطوری می‌شه داده‌ها رو به شکل جدولی توی console نمایش بدیم؟
373 چطوری می‌شه بررسی کرد که یه پارامتر Number هست یا نه؟
374 چطوری یه متن رو می‌تونیم به clipboard کپی کنیم؟
375 چطوری می‌شه timestamp رو بدست آورد؟
376 چطوری یه آرایه چندسطحی رو تک سطحی کنیم؟
377 ساده‌ترین روش برای بررسی چندشرطی چیه؟
378 چطوری کلیک روی دکمه برگشت مرورگر رو متوجه بشیم؟
379 چطوری می‌تونیم کلیک راست رو غیرفعال کنیم؟
380 object-wrapperها چی هستن؟
381 AJAX چیه؟
382 روش‌های مختلف مدیریت یه کد Asynchronous چیه؟
383 چطوری یه درخواست fetch رو کنسل کنیم؟
384 Speech-API چیه؟
385 حداقل timeout توی throttling چقدره؟
386 چطوری می‌شه یه timeout صفر توی مرورگر اجرا کرد؟
387 taskها توی event-loop چی هستن؟
388 microtaskها چی هستن؟
389 event-loopهای مختلف کدوما هستن؟
390 هدف از queueMicrotask چیه؟
391 چطوری می‌شه از کتابخونه‌های جاواسکریپت توی فایل typescript استفاده کرد؟
392 تفاوت‌های بین promiseها و observableها کدوما هستن؟
393 heap چیه؟
394 event-table چیه؟
395 صف microTask چیه؟
396 تفاوت بین shim و polyfill چیه؟
397 چطوری متوجه primitive یا غیر primitive بودن یه نوع داده میشیم؟
398 babel چیه؟
399 آیا Node.js به شکل کامل تک thread کار می‌کنه؟
400 کاربردهای مرسوم observableها کدوما هستن؟
401 RxJS چیه؟
402 تفاوت بین Function-constructor و function-declaration چیه؟
403 شرط Short-circuit یا اتصال کوتاه چیه؟
404 ساده‌ترین روش برای تغییر سایز یه آرایه چیه؟
405 observable چیه؟
406 تفاوت‌های بین توابع و کلاس‌ها چیه؟
407 تابع async چیه؟
408 چطوری خطاهای ایجاد شده هنگام استفاده از promiseها رو کنترل کنیم؟
409 Deno چیه؟
410 توی جاواسکریپت چطوری یه object قابل پیمایش درست کنیم؟
411 روش مناسب برای فراخوانی توابع بازگشتی چیه؟
412 چطوری بررسی کنیم که یه آبجکت promise هست یا نه؟
413 چطوری متوجه بشیم که یا تابع با تابع constructor صدا زده شده یا نه؟
414 تفاوت‌های بین آبجکت argument و پارامتر rest چیه؟
415 تفاوت‌های بین عملگر spread و پارامتر rest چیه؟
416 نوع‌های مختلف generatorها کدوما هستن؟
417 iterableهای built-in کدوما هستن؟
418 تفاوت‌های بین حلقه for...of و for...in چیه؟
419 چطوری propertyهای instance و غیر instanceای تعریف می‌کنی؟
420 تفاوت‌های بین isNaN و Number.isNaN کدوما هستن؟
+

+

+
+

پیشگفتار

+

در ابتدا، ممنونم از شما که با خرید این کتاب بهمون کمک کردین که بتونیم قدمی در راه کمک به افراد نیازمند برداریم و با درآمد حاصل از فروش این کتاب + کمکی هر چند کوچیک در راه مسئولیت اجتماعی‌مون برداریم، به هم‌دیگه کمک کنیم، با هم مهربون‌تر باشیم و در کنار هم پیشرفت کنیم. + تشکر گرم من رو، دورادور پذیرا باشین و امیدوارم این کتاب به جهت افزایش دانش‌تون و کمک به پیشرفت شغلی‌تون کمکی کرده باشه. +
+ کتابی که پیش‌روی شماست، حاصل تلاش نه فقط من، بلکه چندین نفر از بهترین و حرفه‌ای‌ترین دوستان بنده هم هست که در اینجا به ترتیب میزان زحمتی که متقبل شدن اسمشونو قید می‌کنم و کمال تشکر رو ازشون دارم: +

+ این عزیزان هر کدام با کمک‌هاشون برای ترجمه، ویراستاری‌هاشون و حتی دل‌گرمی‌هاشون باعث شدن این مجموعه به زبان فارسی آماده بشه و به شکل چاپی بتونه به دستان شما برسه. +

+ +

ماریوتک

+

+ من جعفررضائی، پلتفرم ماریوتک رو با هدف آموزش اصولی و رایگان، تاسیس کردم و این کتاب هم از مجموعه ماریوتک منتشر میشه. ما ماریوتک رو متعلق به همه می‌دونیم، پس اگه بعضی تایم‌های بیکاری داری که فکر می‌کنی می‌تونی باهامون توی این مسیر همراه باشی حتما بهم ایمیل بزن. + ایده‌های ماریوتک برای افزایش آگاهی و دانش تا حد امکان رایگان خواهد بود و تا به اینجا هم، تنها هزینه‌های چاپ برداشته شده و مابقی به موسسات خیریه داده شدن. +

+ + +

مطالب کتاب

+

+ مطالب این کتاب می‌تونن تا حد بسیار خوبی دانش شما رو توی مسائل کلیدی مربوط به React.js و کتابخونه‌های پیرامون اون افزایش بدن. سوالات چالشی و کلیدی مطرح شده توی کتاب اکثرا سوالاتی هستند که توی مصاحبه‌های استخدامی پرسیده میشن و مسلط بودن به اونا می‌تونه شانس موفقیت شما برای موقعیت‌های شغلی که مدنظر دارین افزایش بده. + مطالب این کتاب به دلیل ترجمه بودن تا حد زیادی قابل دستکاری نبودن و سعی شده تا حد امکان حق گردآورنده محفوظ باشه و با نسخه اصلی سورس که توسط Sudheer Jonna جمع‌آوری شده تفاوت معنایی نداشته باشه. بخشی از مطالب کتاب اصلی به خاطر قدیمی بودن منقضی شده بودن و به عنوان مترجم بخش‌های زیادی از نمونه کدها و مطالب قدیمی تصحیح شدند. در آخر، امیدوارم همیشه شاد و خندان و خوشحال باشین. مخلصیم +

+
+

  1. -

    روش‌های ایجاد objects توی جاواسکریپت چیا هستن؟

    +

    روش‌های ایجاد objects توی جاواسکریپت چیا هستن؟

    1. سازنده آبجکت:

    @@ -2288,13 +2737,13 @@

    فهرست

  2. -

    زنجیره prototype چیه؟

    +

    زنجیره prototype چیه؟

    زنجیره prototype برای ساخت انواع جدیدی از آبجکت‌ها بر‌اساس موارد موجود استفاده می‌شه. این کار شبیه ارث بری توی یه زبان مبتنی بر کلاس هستش. prototype روی نمونه آبجکت از طریق ویژگی Object.getPrototypeOf(object) یا proto در دسترسه در حالی که نمونه اولیه توی عملکرد سازنده‌ها از طریق object.prototype در دسترسه.

    Screenshot

    فهرست

  3. -

    تفاوت‌های بین Call، Apply و Bind چیا هستن؟

    +

    تفاوت‌های بین Call، Apply و Bind چیا هستن؟

    Call: متد call یه تابع با یه مقدار this و آرگومان‌های ارائه شده رو دونه دونه فراخوانی می‌کنه

    var employee1 = {firstName: 'John', lastName: 'Rodson'};
    @@ -2337,7 +2786,7 @@ 

    فهرست

  4. -

    فرمت JSON چیه و عملیات‌های معمول بر روی آن چیا هستن؟

    +

    فرمت JSON چیه و عملیات‌های معمول بر روی آن چیا هستن؟

    JSON یه قالب داده مبتنی برمتن هستش که از نحو آبجکت جاوا‌اسکریپت (javascript objext syntax) پیروی می‌کنه و توسط ‍‍Douglas Crockford رایج شد. کاربردش زمانیه که بخوایم داده‌ها رو از طریق شبکه انتقال بدیم و اساسا یه فایل متنی با پسوند .json و نوع MIME از application/json
    تجزیه (Parsing): تبدیل یه رشته به یه آبجکت محلی (native Object)

    @@ -2350,7 +2799,7 @@

    فهرست

  5. -

    هدف از متد slice روی آرایه‌ها چیه؟

    +

    هدف از متد slice روی آرایه‌ها چیه؟

    متد slice عناصر انتخاب شده توی یه آرایه رو به عنوان یه آبجکت آرایه جدید برمی‌گردونه. این عناصر رو از اولین آرگومان داده شده انتخاب می‌کنه و با آرگومان پایانی و اختیاری داده شده بدون در نظر گرفتن آخرین عنصر به پایان می‌رسونه. اگه آرگومان دوم رو حذف کنیم تا آخر آرایه همه عناصر رو انتخاب می‌کنه. چند تا مثال در مورد این متد اینجا نوشته شده

    let arrayIntegers = [1, 2, 3, 4, 5];
    @@ -2362,7 +2811,7 @@ 

    فهرست

  6. -

    هدف از متد splice روی آرایه‌ها چیه؟

    +

    هدف از متد splice روی آرایه‌ها چیه؟

    متدsplice برای اضافه کردن به آرایه یا حذف از اون استفاده می‌شه و مورد حذف شده رو برمی‌گردونه. آرگومان اول موقعیت آرایه رو برای درج یا حذف مشخص می‌کنه در حالی که آرگومان اختیاری دوم تعداد عناصر حذف شده رو مشخص می‌کنه. هر آرگومان اضافه‌ای به آرایه اضافه می‌شه. چند تا مثال در این مورد اینجا نوشته شده.

    let arrayIntegersOriginal1 = [1, 2, 3, 4, 5];
    @@ -2377,7 +2826,7 @@ 

    فهرست

  7. -

    تفاوت متدهای slice و splice چیا هستن؟

    +

    تفاوت متدهای slice و splice چیا هستن؟

    @@ -2403,7 +2852,7 @@

    فهرست

  8. -

    تفاوت‌های Object و Map چیا هستن؟

    +

    تفاوت‌های Object و Map چیا هستن؟

    آبجکت‌ها شبیه به نقشه‌ها (Maps) هستن از این جهت که هردو بهمون این امکتن رو میدن که کلید‌ها رو روی مقادیر تنظیم کنیم، مقادیر رو بازیابی کنیم، کلید‌ها رو حذف کنیم و ببینیم چیزی توی یه کلید ذخیره شده یا نه. به همین دلیل از آبجکت‌ها به عنوان نقشه‌ها (Maps) در طول تاریخ استفاده شده. اما تفاوت‌های مهمی وجود داره که استفاده از نقشه (map) رو توی موارد خاص ترجبح میده.

    1. کلید‌های یه آبجکت رشته‌ها و نماد‌ها هستن، در حالی که برای نقشه مقادیر مختلفی میتونه وجود داشته باشه که شامل توابع، آبجکت‌ها و هر نوع اولیه دیگه‌ای می‌شه.

    2. @@ -2416,7 +2865,7 @@

      فهرست

    3. -

      تفاوت‌های بین عملگرهای == و === چیا هستن؟

      +

      تفاوت‌های بین عملگرهای == و === چیا هستن؟

      جاواسکریپت مقایسه برابری سخت (=، !) و تبدیل نوع (==، !=) رو فراهم می‌کنه. عملگرهای سختگیرانه نوع متغیر رو در نظر می‌گیرند، در حالی که عملگرهای غیر دقیق، اصلاح/تبدیل نوع رو بر اساس مقادیر متغیرها انجام می دهند. اپراتورهای سختگیر از شرایط زیر برای انواع مختلف پیروی می‌کنن.

      1. دو رشته زمانی کاملاً برابر هستن که توالی کاراکترهای یکسان، طول یکسان و کاراکترهای مشابه در موقعیت‌های متناظر داشته باشن.

      2. @@ -2445,12 +2894,12 @@

        فهرست

      3. -

        توابع lambda یا arrow-function چی هستن؟

        +

        توابع lambda یا arrow-function چی هستن؟

        arrow function ‌ها به صورت ساده‌تر و کوتاه‌تر تعریف میشن و this، argumants، super یا new.target ندارن. این توابع بدون متد هستند و به عنوان سازنده یا constructor استفاده نمیشن.

        فهرست

      4. -

        یه تابع first-class چجور تابعی‌ـه؟

        +

        یه تابع first-class چجور تابعی‌ـه؟

        توی جاوااسکریپت، توابع آبجکت‌های کلاس اول یا first class هستن. توابع کلاس اول زمانی معنی میدن که توابع توی اون زبان باهاشون مثل بقیه متغیر‌ها رفتار بشه.

        برای مثال، توی چنین زبانی، یه تابع میتونه به عنوان آرگومان به یه تابع دیگه انتقال داده بشه، میتونه به عنوان مقدار نهایی یه تابع دیگه برگشت داده بشه و میتونه به یه متغیر دیگه به عنوان مقدار اختصاص داده بشه. برای مثال توی کد زیر، توابع نگهدارنه یا handler به یه شنونده یا listener اختصاص داده شده.

        @@ -2460,7 +2909,7 @@

        فهرست

      5. -

        یه تابع first-order چجور تابعی‌ـه؟

        +

        یه تابع first-order چجور تابعی‌ـه؟

        تابع مرتبه اول یا first-order تابعیه که هیچ تابع دیگه‌ای رو به عنوان آرگومان قبول نمی‌کنه و هیچ تابعی رو هم به عنوان مقدار برگشتی یا return value برنمی‌گردونه.

        const firstOrder = () => console.log ('I am a first order function!');
        @@ -2468,7 +2917,7 @@ 

        فهرست

      6. -

        یه تابع higher-order چجور تابعی‌ـه؟

        +

        یه تابع higher-order چجور تابعی‌ـه؟

        توابع مرتبه بالا توابعی هستن که یه تابع رو به عنوان پارامتر ورودی دریافت و یا به عنوان خروجی ارسال میکنن.

        const firstOrderFunc = () => console.log ('Hello I am a First order function');
        @@ -2478,7 +2927,7 @@ 

        فهرست

      7. -

        یه تابع unary چجور تابعی‌ـه؟

        +

        یه تابع unary چجور تابعی‌ـه؟

        تابع unary تابعیه که فقط یه آرگومان ورودی دریافت می‌کنه. بیاین یه مثال از توابع unary بزنیم.

        // Add 10 to the given argument and display the value
        @@ -2489,7 +2938,7 @@ 

        فهرست

      8. -

        currying توابع یعنی چی؟

        +

        currying توابع یعنی چی؟

        به فرایندی که در اون یه تابع با چندین آرگومان رو به مجموعه‌ای از توابع که فقط یه آرگومان دریافت میکنن، تبدیل کنیم currying می‌گیم. Currying از نام یه ریاضی‌دان به اسم Haskell Curry گرفته شده. با استفاده از Currying در واقع یه تابع رو به یه تابع unary تبدیل می‌کنیم. بیاین یه مثال از یه تابع با چندین آرگومان و تبدیلش به تابع currying بزنیم.

        const multiArgFunction = (a, b, c) => a + b + c;
        @@ -2502,7 +2951,7 @@ 

        فهرست

      9. -

        چه توابعی pure هستن؟

        +

        چه توابعی pure هستن؟

        تابع خالص تابعیه که مقدار برگشتیش فقط توسط آرگومان‌هاش تعیین می‌شه بدون هیج side effect یا عوارض جانبی. برای مثال اگه ما یه تابع رو n بار در n جای مختلف برنامه فراخوانی کنیم همی‌شه یه مقدار مشخص برگشت داده می‌شه. بیاین یه مثال از تفاوت بین توابع خالص و توابع ناخالص بزنیم.

        //Impure
        @@ -2523,7 +2972,7 @@ 

        فهرست

      10. -

        هدف از کلمه کلیدی let چیه؟

        +

        هدف از کلمه کلیدی let چیه؟

        دستور let یه متغیر محلی block scope تعریف می‌کنه. از این رو متغیر‌هایی که با کلمه کلیدی let تعریف میشن محدود به همون اسکوپی که توش تعریف شدن، دستورها و عبارت‌های توی همون اسکوپ میشن. درحالی که متغیر‌های تعریف شده با کلمه کلیدی var برای تعریف یه متغیر توی سطح global یا محلی برای استفاده در کل توابع بدون در نظر گرفتن اسکوپی که توش تعریف شده، استفاده می‌شه. بیاین برای نشون دادن کاربردش یه مثال بزنیم.

        let counter = 30;
        @@ -2536,7 +2985,7 @@ 

        فهرست

      11. -

        تفاوت‌های کلمات کلیدی let و var چیا هستن؟

        +

        تفاوت‌های کلمات کلیدی let و var چیا هستن؟

        تفاوت‌ها رو توی جدول زیر می‌بینیم

        var :

          @@ -2566,12 +3015,12 @@

          فهرست

        1. -

          دلیل انتخاب کلمه کلیدی let چیه؟

          +

          دلیل انتخاب کلمه کلیدی let چیه؟

          Let یه عنوان ریاضی هستش که توسط زبان‌های برنامه‌نویسی اولیه مثل Scheme و Basic پذیرفته شده. این زبان از ده‌ها زبان دیگه گرفته شده که از let به عنوان یه کلمه کلیدی سنتی تا حد ممکن نزدیک به var استفاده می‌کنه.

          فهرست

        2. -

          چطوری می‌تونیم توی بلوک مربوط به switch بدون دریافت خطا متغیر تعریف کنیم؟

          +

          چطوری می‌تونیم توی بلوک مربوط به switch بدون دریافت خطا متغیر تعریف کنیم؟

          اگه بخوایم متغیر‌ها رو مجددا توی یه بلاک switch تعریف کنیم، این کار باعث خطا می‌شه چون در واقع فقط یه بلاک وجود داره. برای مثال توی کد زیر یه خطای نحوی ایجاد می‌شه

          let counter = 1;
          @@ -2602,7 +3051,7 @@ 

          فهرست

        3. -

          Temporal-Dead-Zone چیه؟

          +

          Temporal-Dead-Zone چیه؟

          Temporal Dead Zone رفتاری توی جاوااسکریپته که موقع تعریف متغیر با کلمات کلیدی let و const رخ میده، نه با کلمه کلیدی var. توی اکما‌اسکریپت ۶، دستیابی به متغیر let و const قبل از تعریفش (توی scope خودش) باعث خطای refrence می‌شه. فاصله زمانی ایجاد اون، بین ایجاد اتصال متغیر و تعریف اون، منطقه Temporal Dead هستش. بیاین با یه مثال ببینیم،

          function somemethod() {
          @@ -2615,7 +3064,7 @@ 

          فهرست

        4. -

          IIFE(توابع بلافاصله صدا زده شده) چی هستن؟

          +

          IIFE(توابع بلافاصله صدا زده شده) چی هستن؟

          IIFE (فراخوانی عملکرد بلافاصله) یه تابع جاوا‌اسکریپته که به محض تعریف اجرا می‌شه.
          امضای اون به این صورته،

          @@ -2640,7 +3089,7 @@

          فهرست

        5. -

          مزایای استفاده از moduleها چیه؟

          +

          مزایای استفاده از moduleها چیه؟

          استفاده از ماژول‌ها مزایای زیادی داره،

          1. قابلیت نگهداری

          2. @@ -2650,7 +3099,7 @@

            فهرست

          3. -

            Memoization چیه؟

            +

            Memoization چیه؟

            Memoization یه روش برنامه‌نوسی هست که سعی داره با ذخیره نتایج قبلی یه تابع عملکرد اون تابع رو افزایش بده. هر بار که یه تابع Memoize شده فراخوانی می‌شه، پارامتر‌های اون cache می‌شه یعنی توی حافظه پنهان ذخیره می‌شه. اگه داده وجود داشته باشه، بدون اجرای کل تابع می‌شه اونو برگردوند در غیر این صورت تابع اجرا می‌شه و بعدش نتیجه توی حافظه پنهان ذخیره می‌شه.
            بیاین یه مثال از نوشتن یه تابع با Memoization بزنیم،

            @@ -2678,7 +3127,7 @@

            فهرست

          4. -

            Hoisting چیه؟

            +

            Hoisting چیه؟

            Hoisting یه مکانیسم جاوا‌اسکریپته که متغیر‌ها و تعاریف توابع رو به بالای scope یا دامنه خودشون انتقال میده. یادمون باشه که جاوا‌اسکریپت فقط تعریف متغیر‌ها و توابع رو Hoist می‌کنه، نه مقدارههی اولیه اونا رو.
            بیاین یه مثال ساده از hoist کردن متغیر‌ها بزنیم،

            @@ -2694,7 +3143,7 @@

            فهرست

          5. -

            Classها توی ES6 چی هستن؟

            +

            Classها توی ES6 چی هستن؟

            در ES6، کلاس‌های جاواسکریپت عمدتاً قند نحوی بر وراثت مبتنی بر نمونه اولیه جاواسکریپت‌ـه.
            برای مثال، وراثت مبتنی بر نمونه اولیه که در عبارت تابع به صورت زیر نوشته شده.

            @@ -2723,7 +3172,7 @@

            فهرست

          6. -

            Closureها چیا هستن؟

            +

            Closureها چیا هستن؟

            کلاژور ترکیبی از یه تابع و محیط واژگانی هستش که تابع در اون تعریف شده. برای مثال این یه تابع داخلیه که به متغیر‌های تابع خارجی دسترسی داره. کلاژور دارای سه زنجیره دامنه هستش
            ۱. دامنه رو جایی تعریف می‌کنیم که متغیر‌ها بین کرلی براکت‌های اون تعریف شده باشه
            ۲. متغیر‌های تابع بیرونی
            @@ -2744,12 +3193,12 @@

            فهرست

          7. -

            Moduleها چیا هستن؟

            +

            Moduleها چیا هستن؟

            ماژول‌ها به واحد‌های کوچیکی از کد مستقل و قابل استفاده مجدد اشاره می‌کنن و همچنین به عنوان پایه بسیاری از الگو‌های طراحی javascript عمل می‌کنن. خروجی ماژول‌های javascript یه شی، یه تابع یا constructor هستش.

            فهرست

          8. -

            چرا به moduleها نیاز داریم؟

            +

            چرا به moduleها نیاز داریم؟

            لیستی از مزایای استفاده از ماژول‌ها در اکوسیستم جاوااسکریپت اینجا گفته شده

            1. قابلیت نگهداری

            2. @@ -2759,32 +3208,32 @@

              فهرست

            3. -

              توی جاواسکریپت scope چیه و چیکار می‌کنه؟

              +

              توی جاواسکریپت scope چیه و چیکار می‌کنه؟

              scope یا محدوده، دسترسی متغیر‌ها، توابع و اشیاء در بعضی از قسمت‌های کدمون در زمان اجرا هستش. به عبارت دیگه، دامنه قابلیت دیده شدن متغیر‌ها و بقیه منابع رو تو قسمت‌هایی از کدمون تعیین می‌کنه.

              فهرست

            4. -

              service-worker چیه؟

              +

              service-worker چیه؟

              service worker اساسا یه اسکریپت هستش که جدا از یه صفحه وب توی پس‌زمینه اجرا می‌شه و ویژگی‌هایی رو فراهم می‌کنه که نیازی به صفحه وب یا تعامل کاربر نداره. بعضی از ویژگی‌های عمده service worker‌ها عبارتند از: تجارب غنی آفلاین (اولین برنامه آفلاین وب)، همگام‌سازی دوره‌ای پس‌زمینه، push notification, رهگیری و رسیدگی به درخواست‌های شبکه و مدیریت برنامه‌ای cache response‌ها.

              فهرست

            5. -

              توی service-worker چطوری می‌شه DOM رو دستکاری کرد؟

              +

              توی service-worker چطوری می‌شه DOM رو دستکاری کرد؟

              service worker مستقیما نمیتونه به DOM دسترسی پیدا کنه، اما میتونه با پاسخ به پیام‌های ارسالی از طریق رابط postMessage با صفحاتی که کنترل می‌کنه ارتباط برقرار کنه و این صفحات میتونن DOM رو دستکاری کنن.

              فهرست

            6. -

              چطوری می‌تونیم بین ریست شدن‌های service-worker داده‌های مورد نظرمون رو مجدد استفاده کنیم؟

              +

              چطوری می‌تونیم بین ریست شدن‌های service-worker داده‌های مورد نظرمون رو مجدد استفاده کنیم؟

              مشکلی که توی service worker وجود داره اینه که در صورت عدم استفاده خاتمه پیدا می‌کنه و در صورت نیاز بعدی دوباره راه‌اندازی می‌شه، بنابراین نمی‌تونیم به state‌های سراسری توی نگهدارنه‌های onfetch و onmessage یه service worker اعتماد کنیم. تو این حالت service worker برای تداوم کار و استفاده مجدد موقع شروع مجدد، به indexedDB API دسترسی خواهد داشت.

              فهرست

            7. -

              IndexedDB چیه؟

              +

              IndexedDB چیه؟

              IndexedDB یه API سطح پایین برای ذخیره client-side یا سمت کاربر توی مقادیر بیشتری از داده ساخت‌ یافته شامل فایل‌ها و حباب‌ها هستش. این API از index‌ها برای فعال کردن جستجو‌های با کارایی بالا توی این داده‌ها استفاده می‌کنه.

              فهرست

            8. -

              Web-storage چیه؟

              +

              Web-storage چیه؟

              web storage یه API هستش که مکانیسمی رو فراهم می‌کنه که مرورگر‌ها میتونن مقدار و کلید رو ب صورت محلی توی مرورگر کاربر ذخیره کنن، ب روشی کاملا قابل درک نسبت به استفاده ا کوکی‌ها. فضای ذخیره‌سازی وب دو مکانیزم ر برای ذخیره اطلاعات روی مشتری فراهم می‌کنه.

              1. Local storage: داده‌ها رو برای مبدا فعلی و بدون تاریخ انقضا ذخیره می‌کنه.

              2. @@ -2793,12 +3242,12 @@

                فهرست

              3. -

                Post-message چیه؟

                +

                Post-message چیه؟

                Post message روشی هست که امکان ایجاد ارتباط متقابل بین آبجکت‌های window رو فراهم می‌کنه (برای مثال، بین یه صفحه و یه پنجره باز‌شو که باعث ایجاد اون شده، یا بین یه صفح و یه iframe جاسازی شده در اون) به طور کل اسکریپت‌های موجود در صفحات مختلف مجاز ب دسترسی به همدیگه هستن، تنها در صورتی که صفحات از خط‌ مشی‌ یکسانی تبعیت کنن. (یعنی صفحات از پروتکل، شماره پورت و میزبان یکسانی برخوردار هستن)

                فهرست

              4. -

                Cookie چیه؟

                +

                Cookie چیه؟

                کوکی قطعه‌ای از داده هستش که توی کامپیوترمون ذخیره می‌شه تا مرورگر به اون دسترسی داشته باشه. کوکی‌ها به عنوان جفت‌های کلید و مقدار ذخیره میشن.
                برای مثال می‌تونیم یه کوکی با نام کاربری مثل زیر ایجاد کنیم،

                @@ -2808,14 +3257,14 @@

                فهرست

              5. -

                چرا به cookie نیاز داریم؟

                +

                چرا به cookie نیاز داریم؟

                از کوکی‌ها برای به خاطر سپردن اطلاعات مربوط به مشخصات کاربر (مانند نام کاربری) استفاده می‌شه. در اصل شامل دو مرحله هستش،
                ۱. وقتی که کاربر از یه صفحه وب بازدید می‌کنه، مشخصات کاربر میتونه توی یه کوکی ذخیره بشه.
                ۲. دفعه بعد که کاربر از صفحه بازدید کرد، کوکی مشخصات کاربر رو به خاطر میاره.

                فهرست

              6. -

                گزینه‌های قابل تنظیم توی cookie چیا هستن؟

                +

                گزینه‌های قابل تنظیم توی cookie چیا هستن؟

                گزینه‌های زیر برای کوکی موجوده،
                ۱. به طور پیش فرض، کوکی موقع بسته شدن مرورگر حذف می‌شه اما با تنظیم تاریخ انقضا (به وقت UTC) می‌تونیم این رفتار رو تغییر بدیم.

                @@ -2828,7 +3277,7 @@

                فهرست

              7. -

                چطوری می‌شه یه cookie رو حذف کرد؟

                +

                چطوری می‌شه یه cookie رو حذف کرد؟

                با تنظیم تاریخ انقضا به عنوان تاریخ گذشته می‌تونیم کوکی رو حذف کنیم. تو این حالت نیازی به تعیین مقدار کوکی نیست.
                برای مثال، می‌تونیم کوکی نام کاربری رو توی صفحه فعلی به صورت زیر حذف کنیم.

                @@ -2838,7 +3287,7 @@

                فهرست

              8. -

                تفاوت‌های بین cookie، local-storage و session-storage چیا هستن؟

                +

                تفاوت‌های بین cookie، local-storage و session-storage چیا هستن؟

                تفاوت‌های بین کوکی، لوکال استوریج و سشن استوریج اینا هستن:

  9. @@ -2879,12 +3328,12 @@

    فهرست

  10. -

    تفاوت‌های بین localStorage و sessionStorage چیا هستن؟

    +

    تفاوت‌های بین localStorage و sessionStorage چیا هستن؟

    لوکال استوریج همون سشن استوریج هستش اما داده‌ها با بستن و دوباره باز کردن مرورگر همچنان حفظ می‌شه (تاریخ انقضا نداره) در حالی که سشن استوریج داده‌ها رو با بستن پنجره مرورگر پاک می‌کنه.

    فهرست

  11. -

    چطوری به web-storage دسترسی پیدا می‌کنی؟

    +

    چطوری به web-storage دسترسی پیدا می‌کنی؟

    شی window به ترتیب ویژگی‌های WindowLocalStorage و WindowSessionStorage رو که دارای ویژگی‌های localStorage(window.localStorage) و sessionStorage(window.sessionStorage) هستن رو پشتیبانی می‌کنه. این خصوصیات نمونه ای از شی Storage رو ایجاد می‌کنه که از طریق اون می‌شه موارد داده رو برای یه دامنه خاص و نوع ذخیره سازی (session یا محلی) تنظیم، بازیابی و حذف کرد.
    برای مثال، می‌تونیم روی اشیای ذخیره سازی محلی مثل زیر بخونیم و بنویسیم

    @@ -2894,7 +3343,7 @@

    فهرست

  12. -

    چه متد‌هایی روی session-storage قابل استفاده هستن؟

    +

    چه متد‌هایی روی session-storage قابل استفاده هستن؟

    session storage متد‌هایی رو برای خواندن، نوشتن و پاکسازی داده‌های session ارائه میده.

    // Save data to sessionStorage
    @@ -2912,7 +3361,7 @@ 

    فهرست

  13. -

    رخداد storage چیه و چطوری ازش استفاده می‌کنیم؟

    +

    رخداد storage چیه و چطوری ازش استفاده می‌کنیم؟

    storageEvent رویدادی هستش که با تغییر مکان ذخیره‌سازی در متن سند دیگه‌ای فعال می‌شه. در حالی که خاصیت ذخیره‌سازی یه EventHandler برای پردازش رویدادهای ذخیره‌سازی‌ـه.

    window.onstorage = functionRef;
    @@ -2928,12 +3377,12 @@ 

    فهرست

  14. -

    چرا به web-storage نیاز داریم؟

    +

    چرا به web-storage نیاز داریم؟

    فضای ذخیره سازی وب از امنیت بیشتری برخورداره و مقدار زیادی داده میتونن به صورت محلی ذخیره بشن، بدون اینکه روی عملکرد وب سایت تأثیر بذارن. همچنین، اطلاعات هرگز به سرور منتقل نمیشن. به همین دلیل این روش نسبت به کوکی‌ها بیشتر توصیه می‌شه.

    فهرست

  15. -

    چطوری می‌تونیم پشتیبانی از web-storage توسط مرورگر رو بررسی کنیم؟

    +

    چطوری می‌تونیم پشتیبانی از web-storage توسط مرورگر رو بررسی کنیم؟

    قبل از استفاده از فضای ذخیره‌سازی وب، باید پشتیبانی مرورگر رو برای localStorage و sessionStorage بررسی کنیم.

    if (typeof(Storage) !== "undefined") {
    @@ -2945,7 +3394,7 @@ 

    فهرست

  16. -

    چطوری می‌تونیم پشتیبانی از web-worker توسط مرورگر رو بررسی کنیم؟

    +

    چطوری می‌تونیم پشتیبانی از web-worker توسط مرورگر رو بررسی کنیم؟

    قبل از استفاده، باید پشتیبانی مرورگر رو برای web worker‌ها بررسی کنیم

    if (typeof(Worker) !== "undefined") {
    @@ -2957,7 +3406,7 @@ 

    فهرست

  17. -

    یه مثال از web-workerها می‌تونی بزنی؟

    +

    یه مثال از web-workerها می‌تونی بزنی؟

    برای شروع استفاده از web worker‌ها برای مثال شمارنده باید مراحل زیر رو دنبال کنیم
    ۱. ساخت یه فایل Web Worker: برای افزایش مقدار شمارش، باید یه اسکریپت بنویسیم. بیاین اسمشو counter.js بذاریم

    @@ -2996,7 +3445,7 @@

    فهرست

  18. -

    محدودیت‌های web-workerها روی DOM چیا هستن؟

    +

    محدودیت‌های web-workerها روی DOM چیا هستن؟

    WebWorker‌ها به اشیا جاوااسکریپت دسترسی ندارن چون توی یه فایل خارجی تعریف شدن.

    1. Window object

    2. @@ -3006,7 +3455,7 @@

      فهرست

    3. -

      Promise چیه؟

      +

      Promise چیه؟

      یه promise آبجکت‌ای‌ـه که ممکنه در آینده یه مقدار واحد رو با یه مقدار حل شده یا به دلیل حل نشدنش (مثلاً خطای شبکه) تولید کنه. تو یهی از 3 حالت ممکن خواهد بود: انجام شده، رد شده، یا در انتظار.

      برای ساختن Promise‌ها از سینتکس زیر استفاده می‌شه

      @@ -3031,12 +3480,12 @@

      فهرست

    4. -

      چرا به promise نیاز داریم؟

      +

      چرا به promise نیاز داریم؟

      Promises برای رسیدگی به عملیات ناهمزمان استفاده می‌شه. اونا با کاهش جهنم callback و نوشتن کد پاک‌کننده، یه رویکرد جایگزین برای callbackها ارائه می‌کنن.

      فهرست

    5. -

      سه تا وضعیت ممکن برای یه promise چیا هستن؟

      +

      سه تا وضعیت ممکن برای یه promise چیا هستن؟

      پرامیس‌ها‌ها سه حالت دارن:

      1. Pending: این حالت اولیه Promise قبل از شروع عملیاته

      2. @@ -3046,7 +3495,7 @@

        فهرست

      3. -

        توابع callback چی هستن؟

        +

        توابع callback چی هستن؟

        تابع callback تابعیه که به عنوان آرگومان به تابع دیگری منتقل می‌شه. این تابع در داخل تابع خارجی برای تکمیل یه عمل فراخوانی می‌شه.
        بیاین یه مثال ساده از نحوه استفاده از تابع callback بزنیم

        @@ -3064,7 +3513,7 @@

        فهرست

      4. -

        چرا به توابع callback نیاز داریم؟

        +

        چرا به توابع callback نیاز داریم؟

        callback‌ها مورد نیاز هستن چون جاواسکریپت یه زبان ایونت محوره. این به این معنیه که به جای منتظر موندن برای جواب جاواسکریپت در حین گوش دادن به ایونت‌های دیگه اجرا می‌شه.
        بیاین مثالی رو با اولین تابع callbackی یه API (شبیه‌سازی شده توسط setTimeout) و تابع بعدی که پیام رو ثبت می‌کنه، بیاریم.

        @@ -3088,7 +3537,7 @@

        فهرست

      5. -

        Callback-hell یا جهنم توابع callback چیه؟

        +

        Callback-hell یا جهنم توابع callback چیه؟

        Callback Hell یه ضد الگو با چندین تماس تو در توعه که خوندن کد و دیباگ رو در موقع برخورد با منطق async سخت می‌کنه. جهنم callback شبیه کد زیره

        async1(function(){
        @@ -3104,12 +3553,12 @@ 

        فهرست

      6. -

        Server-sent-events(SSE) چیه؟

        +

        Server-sent-events(SSE) چیه؟

        event‌های ارسال شده توسط سرور (SSE) یه فناوری فشار سروره که به مرورگر امکان میده به‌روزرسانی‌های خودکار رو از طریق اتصال HTTP بدون استفاده از نظرسنجی دریافت کنه. اینا یه کانال ارتباطی یه طرفه هستن - event‌ها فقط از سروری به مشتری دیگر منتقل میشن این در به‌روزرسانی‌های فیس‌بوک/تویتر، به‌روزرسانی قیمت سهام، فیدهای خبری و غیره استفاده شده.

        فهرست

      7. -

        چطوری می‌تونیم اعلان‌های server-sent-event رو دریافت کنیم؟

        +

        چطوری می‌تونیم اعلان‌های server-sent-event رو دریافت کنیم؟

        شی EventSource برای دریافت اعلان‌های event ارسال شده از سرور استفاده می‌شه. برای مثال، می‌تونین پیام‌هایی رو از سرور مثل مثال زیر دریافت کنین.

        if(typeof(EventSource) !== "undefined") {
        @@ -3122,7 +3571,7 @@ 

        فهرست

      8. -

        چطوری می‌تونیم پشتیبانی مرورگر برای SSE رو بررسی کنیم؟

        +

        چطوری می‌تونیم پشتیبانی مرورگر برای SSE رو بررسی کنیم؟

        می‌تونین قبل از استفاده از eventهای ارسال شده توسط مرورگر مانند زیر، پشتیبانی مرورگر رو انجام بدین.

        if(typeof(EventSource) !== "undefined") {
        @@ -3134,7 +3583,7 @@ 

        فهرست

      9. -

        کدوم توابع روی SSE وجود دارن؟

        +

        کدوم توابع روی SSE وجود دارن؟

        در زیر لیستی از eventهای موجود برای eventهای ارسال شده توسط سرور آمده است

  19. @@ -3161,7 +3610,7 @@

    فهرست

  20. -

    اصلی‌ترین قوانین promiseها چیا هستن؟

    +

    اصلی‌ترین قوانین promiseها چیا هستن؟

    1. پرامیس آبجکت‌ای‌ـه که متد «.then» سازگار با استانداره رو ارائه می‌کنه

    2. یه پرامیس معلق ممکنه به حالت تحقق یافته یا رد شده تبدیل شه

    3. @@ -3171,7 +3620,7 @@

      فهرست

    4. -

      Callback توی callback چطوری رخ میده؟

      +

      Callback توی callback چطوری رخ میده؟

      می‌تونین یه پاسخ تماس رو در داخل یه تماس دیگر قرار بدین تا اقدامات رو به صورت متوالی یکی یکی انجام بدین. این به عنوان callback در callbacks شناخته می‌شه.

      loadScript('/script1.js', function(script) {
      @@ -3192,7 +3641,7 @@ 

      فهرست

    5. -

      زنجیره promiseها چیه؟

      +

      زنجیره promiseها چیه؟

      فرآیند اجرای دنباله ای از وظایف ناهمزمان یکی پس از دیگری با استفاده از پرامیس‌ها به عنوان Promise chaining شناخته می‌شه. بیاین برای محاسبه نتیجه نهایی مثالی از زنجیره قولی بزنیم.

      new Promise(function(resolve, reject) {
      @@ -3226,7 +3675,7 @@ 

      فهرست

    6. -

      کاربرد متد promise.all چیه؟

      +

      کاربرد متد promise.all چیه؟

      Promise.all یه پرامیسه که آرایه ای از پرامیس‌ها رو به عنوان ورودی می‌گیره (یک تکرار) و زمانی حل می‌شه که همه پرامیس‌ها حل شن یا یکی از اونها رد شه. برای مثال، نحو متد premt.all در زیر اومده.

      Promise.all([Promise1, Promise2, Promise3]) .then(result) => {   console.log(result) }) .catch(error => console.log(`Error in promises ${error}`))
      @@ -3235,7 +3684,7 @@ 

      فهرست

    7. -

      هدف از متد race روی promise چیه؟

      +

      هدف از متد race روی promise چیه؟

      متد Promise.race نمونه ای از پرامیس رو که اول حل یا رد شده رو برمی‌گردونه. بیاین مثالی از متد race رو در نظر بگیریم که تو اون پرامیس2 اول حل می‌شه

      var promise1 = new Promise(function(resolve, reject) {
      @@ -3252,17 +3701,17 @@ 

      فهرست

    8. -

      حالت strict توی جاواسکریپت چی کار می‌کنه؟

      +

      حالت strict توی جاواسکریپت چی کار می‌کنه؟

      Strict Mode یه ویژگی جدید در ECMAScript 5 اس که به شما امکان میده یه برنامه یا یه تابع رو تو یه زمینه عملیاتی "سخت" قرار بدین. به این ترتیب از انجام بعضی اقدامات جلوگیری می‌کنه و استثناهای بیشتری رو ایجاد می‌کنه. عبارت تحت اللفظی "استفاده از سخت"؛ به مرورگر دستور میده تا از کد جاواسکریپت در حالت Strict استفاده کنه.

      فهرست

    9. -

      چرا به حالت strict نیاز داریم؟

      +

      چرا به حالت strict نیاز داریم؟

      حالت سخت گیرانه برای نوشتن جاواسکریپت "امن" با اطلاع رسانی "بد نحوی" به خطاهای واقعی مفید است. برای مثال، ایجاد تصادفی یه متغیر گلوبال رو با پرتاب یه خطا حذف می‌کنه و همچنین یه خطا برای انتساب به یه ویژگی غیرقابل نوشتن، یه ویژگی فقط گیرنده، یه ویژگی غیرموجود، یه متغیر غیرموجود یا یه ویژگی غیر قابل نوشتن پرتاب می‌کنه. شی موجود

      فهرست

    10. -

      چطوری می‌تونیم حالت strict رو فعال کنیم؟

      +

      چطوری می‌تونیم حالت strict رو فعال کنیم؟

      حالت سخت با اضافه کردن use strict اعلام می‌شه. به ابتدای یه اسکریپت یا یه تابع.
      اگه در ابتدای یه اسکریپت اعلام شه، دامنه گلوبال داره.

      @@ -3282,7 +3731,7 @@

      فهرست

    11. -

      هدف از عملگر نقیض دوتایی(!!) چیه؟

      +

      هدف از عملگر نقیض دوتایی(!!) چیه؟

      علامت تعجب دوتایی یا نفی (!!) تضمین می‌کنه که نوع حاصل یه بولینه. اگه نادرست بود (برای مثال 0، تهی، تعریف نشده، و غیره)، نادرسته، در غیر این صورت، درسته.
      برای مثال، می‌تونین نسخه IE رو با استفاده از عبارت زیر آزمایش کنین.

      @@ -3298,7 +3747,7 @@

      فهرست

    12. -

      هدف از عملگر delete چیه؟

      +

      هدف از عملگر delete چیه؟

      کلمه کلیدی delete برای حذف ویژگی و همچنین مقدار اون استفاده می‌شه.

      var user= {name: "John", age:20};
      @@ -3309,7 +3758,7 @@ 

      فهرست

    13. -

      عملگر typeof چیکار می‌کنه؟

      +

      عملگر typeof چیکار می‌کنه؟

      برای یافتن نوع متغیر جاواسکریپت می‌تونین از عملگر typeof JavaScript استفاده کنین. نوع یه متغیر یا یه عبارت رو برمی‌گردونه.

      typeof "John Abraham"     // Returns "string"
      @@ -3318,7 +3767,7 @@ 

      فهرست

    14. -

      undefined چیه و چه زمانی undefined می‌گیریم؟

      +

      undefined چیه و چه زمانی undefined می‌گیریم؟

      ویژگی تعریف نشده نشون میده که به یه متغیر مقداری اختصاص داده نشده یا اصلاً اعلام نشده است. نوع مقدار تعریف نشده هم تعریف نشده.

      var user;    // Value is undefined, type is undefined
      @@ -3331,7 +3780,7 @@ 

      فهرست

    15. -

      null چیه؟

      +

      null چیه؟

      مقدار null عدم وجود عمدی هر مقدار شی رو نشون میده. این یکی از مقادیر اولیه جاواسکریپت‌ـه. نوع مقدار null آبجکته.
      با قرار دادن مقدار null می‌تونین متغیر رو خالی کنین.

      @@ -3341,7 +3790,7 @@

      فهرست

    16. -

      تفاوت‌های بین null و undefined چیا هستن؟

      +

      تفاوت‌های بین null و undefined چیا هستن؟

      تفاوت‌های اصلی بین null و undefined

  21. @@ -3376,7 +3825,7 @@

    فهرست

  22. -

    eval چیه؟

    +

    eval چیه؟

    تابع eval کد جاواسکریپت رو که به صورت رشته نمایش داده شده رو ارزیابی می‌کنه. رشته میتونه یه عبارت جاواسکریپت، متغیر، دستور یا دنباله ای از عبارات باشه.

    console.log(eval('1 + 2')); //  3
    @@ -3384,7 +3833,7 @@ 

    فهرست

  23. -

    تفاوت‌های بین window و document چیا هستن؟

    +

    تفاوت‌های بین window و document چیا هستن؟

  24. @@ -3410,7 +3859,7 @@

    فهرست

  25. -

    توی جاواسکریپت چطوری می‌تونیم به history دسترسی داشته باشیم؟

    +

    توی جاواسکریپت چطوری می‌تونیم به history دسترسی داشته باشیم؟

    شی window.history حاوی تاریخچه مرورگر است. با استفاده از متدهای back و ‍next می‌تونین URL‌های قبلی و بعدی رو در تاریخچه بارگذاری کنین.

    function goBack() {
    @@ -3424,7 +3873,7 @@ 

    فهرست

  26. -

    انواع داده‌های جاواسکریپت کدوما هستن؟

    +

    انواع داده‌های جاواسکریپت کدوما هستن؟

    در زیر لیستی از انواع داده‌های جاواسکریپت موجود رو می‌بینیم

    1. Number

    2. @@ -3436,7 +3885,7 @@

      فهرست

    3. -

      isNaN چیه و چیکار می‌کنه؟

      +

      isNaN چیه و چیکار می‌کنه؟

      تابعisNaN برای تعیین اینکه آیا یه مقدار یه عدد غیرقانونی (Not-a-Number) هست یا نه استفاده می‌شه. یعنی اگه مقدار برابر با NaN باشه، این تابع true برمی‌گردونه. در غیر این صورت false برمیگرده.

      isNaN('Hello') //true
      @@ -3445,7 +3894,7 @@ 

      فهرست

    4. -

      تفاوت‌های بین undeclared و undefined چیا هستن؟

      +

      تفاوت‌های بین undeclared و undefined چیا هستن؟

      در زیر تفاوت عمده بین متغیرهای اعلام نشده و تعریف نشده آورده شده است.

  27. @@ -3468,7 +3917,7 @@

    فهرست

  28. -

    کدوم متغیرها عمومی هستن؟

    +

    کدوم متغیرها عمومی هستن؟

    متغیرهای عمومی اونایی ان که در طول کد بدون هیچ محدوده ای در دسترسن. کلمه کلیدی var برای اعلام یه متغیر محلی استفاده می‌شه اما اگه اونو حذف کنین تبدیل به متغجهانی می‌شه.

    msg = "Hello" // var is missing, it becomes global variable
    @@ -3476,12 +3925,12 @@ 

    فهرست

  29. -

    مشکلات متغیرهای عمومی چیا هستن؟

    +

    مشکلات متغیرهای عمومی چیا هستن؟

    مشکل متغیرهای سراسری تضاد نام متغیرها با دامنه محلی و گلوباله. دیباگ و آزمایش کدی که به متغیرهای سراسری متکیه سخته.

    فهرست

  30. -

    مقدار NaN چیه؟

    +

    مقدار NaN چیه؟

    ویژگی NaN یه ویژگی گلوباله که مقدار "Not-a-Number" رو نشون میده. یعنی نشون میده که یه مقدار یه عدد قانونی نیست. استفاده از NaN تو یه برنامه بسیار نادر است، اما می‌شه از اون به عنوان مقدار بازگشتی برای موارد کمی استفاده کرد

    Math.sqrt(-1)
    @@ -3490,7 +3939,7 @@ 

    فهرست

  31. -

    هدف از تابع isFinite چیه؟

    +

    هدف از تابع isFinite چیه؟

    تابعisFiniteبرای تعیین اینکه آیا یه عدد یه عدد محدود و قانونیه استفاده می‌شه. اگه مقدار +infinity، -infinity یا NaN (Not-a-Number) باشه false برمی‌گردونه، در غیر این صورت true رو برمی‌گردونه.

    isFinite(Infinity);  // false
    @@ -3502,7 +3951,7 @@ 

    فهرست

  32. -

    یه event-flow چیه؟

    +

    یه event-flow چیه؟

    event-flow ترتیبیه که event در صفحه وب دریافت می‌شه. وقتی روی عنصری کلیک می‌کنیم که در عنصر‌های مختلف دیگه تودرتوعه. قبل از اینکه کلیکمون واقعاً به مقصد یا عنصر هدف برسه، باید event کلیک رو برای هر یه از عنصرهای والد خود ابتدا راه‌اندازی کنه و از بالا با شی پنجره گلوبال شروع شه.
    دو راه برای جریان event وجود داره

      @@ -3512,17 +3961,17 @@

      فهرست

    1. -

      Event-bubbling چیه؟

      +

      Event-bubbling چیه؟

      Event-bubbling نوعی انتشار event هس که تو اون event ابتدا روی درونی‌ترین عنصر هدف راه‌اندازی می‌شه و سپس به‌طور متوالی روی اجداد (والد) عنصر هدف در همون سلسله مراتب تودرتو راه‌اندازی می‌شه تا زمانی که به بیرونی‌ترین عنصر DOM برسه.

      فهرست

    2. -

      Event-capturing چیه؟

      +

      Event-capturing چیه؟

      Event-capturing نوعی انتشار event که تو اون event اول با بیرونی ترین عنصر ثبت می‌شه و سپس به طور متوالی بر روی children (children) عنصر هدف در همون سلسله مراتب تودرتو راه اندازی می‌شه تا زمانی که به درونی ترین عنصر DOM برسه.

      فهرست

    3. -

      چطوری می‌شه یه فرم رو با استفاده از جاواسکریپت ثبت کرد؟

      +

      چطوری می‌شه یه فرم رو با استفاده از جاواسکریپت ثبت کرد؟

      می‌تونین با استفاده از جاواسکریپت فرمی رو ارسال کنین use document.form[0].submit. تمام اطلاعات ورودی فرم با استفاده از onsubmit event handler ارسال می‌شه

      function submit() {
      @@ -3532,7 +3981,7 @@ 

      فهرست

    4. -

      چطوری می‌شه به اطلاعات مربوط به سیستم عامل کاربر دسترسی داشت؟

      +

      چطوری می‌شه به اطلاعات مربوط به سیستم عامل کاربر دسترسی داشت؟

      شی window.navigator حاوی اطلاعاتی درباره جزئیات سیستم عامل مرورگر بازدیدکننده است. بعضی از ویژگی‌های سیستم عامل تحت ویژگی پلتفرم در دسترس هستن،

      console.log(navigator.platform);
      @@ -3540,19 +3989,19 @@ 

      فهرست

    5. -

      تفاوت‌های بین رخدادهای document-load و DOMContentLoaded چیا هستن؟

      +

      تفاوت‌های بین رخدادهای document-load و DOMContentLoaded چیا هستن؟

      رویداد DOMContentLoade زمانی فعال می‌شه که سند اولیه HTML به‌طور کامل بارگیری و تجزیه شده باشه، بدون اینکه منتظر بمانید تا دارایی‌ها (سبک‌ها، تصاویر و فریم‌های فرعی) بارگیری تمام شه. در حالی که رویداد بارگیری زمانی فعال می‌شه که کل صفحه بارگیری شه، از جمله تمام منابع وابسته (شیوه‌ها، تصاویر).

      فهرست

    6. -

      تفاوت‌های بین objectهای native، host و user چیا هستن؟

      +

      تفاوت‌های بین objectهای native، host و user چیا هستن؟

      Native objects آبجکت‌هایی هستن که بخشی از زبان جاواسکریپت تعریف شده توسط مشخصات ECMAScript هستن. برای مثال، اشیاء اصلی رشته، ریاضی، RegExp، Object، Function و غیره که در مشخصات ECMAScript تعریف شدن.
      Host objects آبجکت‌هایی هستن که توسط مرورگر یا محیط زمان اجرا (Node) ارائه می‌شن. برای مثال، پنجره، XmlHttpRequest، گره‌های DOM و غیره به عنوان اشیاء میزبان در نظر گرفته میشن
      User objects آبجکت‌هایی هستن که در کد جاواسکریپت تعریف شدن. برای مثال، اشیاء کاربر ایجاد شده برای اطلاعات پروفایل.

      فهرست

    7. -

      کدوم ابزار و تکنیک‌ها برای دیباگ کردن برنامه جاواسکریپتی استفاده میشن؟

      +

      کدوم ابزار و تکنیک‌ها برای دیباگ کردن برنامه جاواسکریپتی استفاده میشن؟

      می‌تونین از ابزارها یا تکنیک‌های زیر برای اشکال زدایی جاواسکریپت استفاده کنین

      1. Chrome Devtools

      2. @@ -3562,7 +4011,7 @@

        فهرست

      3. -

        مزایا و معایب استفاده از promiseها به جای callback چیا هستن؟

        +

        مزایا و معایب استفاده از promiseها به جای callback چیا هستن؟

        مزایا و معایب Promise به جای callback

        مزایا:

          @@ -3579,7 +4028,7 @@

          فهرست

        1. -

          تفاوت‌های بین attribute و property روی DOM چیا هستن؟

          +

          تفاوت‌های بین attribute و property روی DOM چیا هستن؟

          ویژگی‌ها در نشونه گذاری HTML تعریف می‌شن در حالی که ویژگی‌ها در DOM تعریف میشن برای مثال، عنصر HTML زیر دارای 2 ویژگی نوع و مقدار هستش

          <input type="text" value="Name:">
          @@ -3598,12 +4047,12 @@ 

          فهرست

        2. -

          سیاست same-origin چیه؟

          +

          سیاست same-origin چیه؟

          خط مشی همون مبدا خط مشیه که از درخواست جاواسکریپت در سراسر مرزهای دامنه جلوگیری می‌کنه. مبدا به عنوان ترکیبی از طرح URI، نام میزبان و شماره پورت تعریف می‌شه. اگه این خط‌مشی رو فعال کنین از دسترسی یه اسکریپت مخرب تو یه صفحه به داده‌های حساس در صفحه وب دیگر با استفاده از Document Object Model (DOM) جلوگیری می‌کنه.

          فهرست

        3. -

          هدف استفاده از void 0 چیه؟

          +

          هدف استفاده از void 0 چیه؟

          Void(0) برای جلوگیری از به روز رسانی صفحه استفاده می‌شه. این برای از بین بردن عارضه جانبی ناخواسته مفید خواهد بود، چون مقدار اولیه تعریف نشده رو برمی‌گردونه. معمولاً برای اسناد HTML استفاده می‌شه که از href="JavaScript:Void(0);" استفاده می‌کنن. تو یه عنصر <a>. یعنی وقتی روی یه پیوند کلیک می‌کنین مرورگر یه صفحه جدید رو بارگیری می‌کنه یا همون صفحه رو تازه می‌کنه. اما با استفاده از این عبارت از این رفتار جلوگیری می‌شه.
          برای مثال، پیوند زیر پیام رو بدون بارگیری مجدد صفحه مطلع می‌کنه

          @@ -3612,22 +4061,22 @@

          فهرست

        4. -

          جاواسکریپت یه زبان تفسیری هست یا کامپایلری؟

          +

          جاواسکریپت یه زبان تفسیری هست یا کامپایلری؟

          جاواسکریپت یه زبان تفسیری‌ـه، نه یه زبان کامپایل شده. یه مفسر در مرورگر کد جاواسکریپت رو می خواند، هر خط رو تفسیر می‌کنه و اونو اجرا می‌کنه. امروزه مرورگرهای مدرن از فناوری موسوم به کامپایل Just-In-Time(JIT) استفاده می‌کنن که جاواسکریپت رو در زمانی که در شرف اجراست به بایت کد اجرایی کامپایل می‌کنه.

          فهرست

        5. -

          آیا جاواسکریپت یه زبان حساس به بزرگی و کوچکی(case-sensitive) حروف است؟

          +

          آیا جاواسکریپت یه زبان حساس به بزرگی و کوچکی(case-sensitive) حروف است؟

          بله، جاواسکریپت یه زبان حساس به حروف کوچک و بزرگه. کلمات کلیدی زبان، متغیرها، نام تابع و اشیا، و هر شناسه دیگر باید همی‌شه با حروف بزرگ تایپ شن.

          فهرست

        6. -

          ارتباطی بین Java و JavaScript وجود داره؟

          +

          ارتباطی بین Java و JavaScript وجود داره؟

          نه، اونا کاملاً دو زبان برنامه نویسی متفاوت هستن و هیچ ارتباطی با یکدیگر ندارن. اما هر دوی اونا زبان‌های برنامه نویسی شی گرا هستن و مانند بسیاری از زبان‌های دیگر، از نحو مشابهی برای ویژگی‌های اساسی (اگر، غیره، برای، سوئیچ، شکستن، ادامه و غیره) پیروی می‌کنن.

          فهرست

        7. -

          Eventها چی هستن؟

          +

          Eventها چی هستن؟

          رویدادها «چیزهایی» هستن که برای عناصر HTML اتفاق می‌افتند. موقعی که جاواسکریپت در صفحات HTML استفاده می‌شه، جاواسکریپت میتونه به این رویدادها واکنش نشون بده. بعضی از نمونه‌های رویدادهای HTML عبارتند از:

          1. بارگیری صفحه وب به پایان رسید

          2. @@ -3653,12 +4102,12 @@

            فهرست

          3. -

            کی جاواسکریپت رو ساخته؟

            +

            کی جاواسکریپت رو ساخته؟

            جاواسکریپت توسط برندان ایچ در سال 1995 و در زمان او در نت اسکیپ ارتباطات ایجاد شد. در ابتدا با نام Mocha توسعه یافت، اما بعداً زمانی که برای اولین بار در نسخه‌های بتا نت اسکیپ عرضه شد، این زبان به طور رسمی LiveScript نامیده شد.

            فهرست

          4. -

            هدف از متد preventDefault چیه؟

            +

            هدف از متد preventDefault چیه؟

            متد preventDefault اگه رویداد قابل لغو باشه، اونو لغو می‌کنه، به این معنی که عمل یا رفتار پیش‌فرض متعلق به رویداد رخ نمیده. برای مثال، جلوگیری از ارسال فرم موقع کلیک بر روی دکمه ارسال و جلوگیری از باز شدن URL صفحه موقع کلیک کردن بر روی لینک از موارد رایج استفاده‌‌‌‌ـشه.

            document.getElementById("link").addEventListener("click", function(event){
            @@ -3669,7 +4118,7 @@ 

            فهرست

          5. -

            کاربرد متد stopPropagation چیه؟

            +

            کاربرد متد stopPropagation چیه؟

            روش stopPropagation برای جلوگیری از حبابی شدن رویداد در زنجیره رویداد استفاده می‌شه. برای مثال، div‌های تودرتو زیر با متد stopPropagation از انتشار پیش فرض رویداد موقع کلیک بر روی div (Div1) جلوگیری می‌کنه.

            <p>Click DIV1 Element</p>
            @@ -3691,7 +4140,7 @@ 

            فهرست

          6. -

            مراحلی که موقع استفاده از return false توی یه event-handler رخ میده چیا هستن؟

            +

            مراحلی که موقع استفاده از return false توی یه event-handler رخ میده چیا هستن؟

            عبارت ‍‍‍‍return false در کنترل کننده رویداد مراحل زیر رو انجام میده:

            1. ابتدا عملکرد یا رفتار پیش فرض مرورگر رو متوقف می‌کنه.

            2. @@ -3701,13 +4150,13 @@

              فهرست

            3. -

              BOM چیه؟

              +

              BOM چیه؟

              مدل شیء مرورگر (BOM) به جاواسکریپت اجازه میده تا با مرورگر "صحبت کنه". این شامل ناوبر اشیاء، تاریخچه، صفحه، مکان و سنده که فرزندان پنجره هستن. مدل شیء مرورگر استانداره نیست و می‌تونه بر اساس مرورگرهای مختلف تغییر کنه.

              Screenshot

              فهرست

            4. -

              موارد استفاده از setTimeout کدوما هستن؟

              +

              موارد استفاده از setTimeout کدوما هستن؟

              متد he setTimeout برای فراخوانی یه تابع یا ارزیابی یه عبارت پس از تعداد مشخصی از میلی ثانیه استفاده می‌شه. برای مثال، بیاین یه پیام رو پس از 2 ثانیه با استفاده از روش setTimeout ثبت کنیم.

              setTimeout(function(){ console.log("Good morning"); }, 2000);
              @@ -3715,7 +4164,7 @@ 

              فهرست

            5. -

              موارد استفاده از setInterval کدوما هستن؟

              +

              موارد استفاده از setInterval کدوما هستن؟

              متد setInterval برای فراخوانی یه تابع یا ارزیابی یه عبارت در بازه‌های زمانی مشخص (بر حسب میلی ثانیه) استفاده می‌شه. برای مثال، اجازه بدین یه پیام رو پس از 2 ثانیه با استفاده از روش setInterval ثبت کنیم.

              setInterval(function(){ console.log("Good morning"); }, 2000);
              @@ -3723,12 +4172,12 @@ 

              فهرست

            6. -

              چرا جاواسکریپت رو به عنوان یه زبان تک thread می‌شناسن؟

              +

              چرا جاواسکریپت رو به عنوان یه زبان تک thread می‌شناسن؟

              جاواسکریپت یه زبان تک Threadـه. چون مشخصات زبان به برنامه نویس اجازه نمیده تا کدی بنویسه که مفسر بتونه بخش‌هایی از اونو به صورت موازی در چندین Thread یا پردازش اجرا کنه. در حالی که زبان‌هایی مانند java، go، C++ میتونن برنامه‌های چند رشته‌ای و چند فرآیندی بسازند.

              فهرست

            7. -

              Event-delegation چیه؟

              +

              Event-delegation چیه؟

              تفویض رویداد تکنیکی برای گوش دادن به رویدادهاس که تو اون یه عنصر والد رو به عنوان شنونده برای همه رویدادهایی که در داخلش اتفاق می‌افتد، تفویض می‌کنین.

              برای مثال، اگه می‌خواین تغییرات فیلد رو تو یه فرم خاص تشخیص بدین، می‌تونین از تکنیک انتقال رویداد استفاده کنین.

              @@ -3745,17 +4194,17 @@

              فهرست

            8. -

              ECMAScript چیه؟

              +

              ECMAScript چیه؟

              ECMAScript زبان برنامه نویسیه که اساس جاواسکریپت رو تشکیل میده. ECMAScript توسط سازمان استانداره بین المللی ECMA در مشخصات ECMA-262 و ECMA-402 استانداره شده است. اولین نسخه ECMAScript در سال 1997 منتشر شد.

              فهرست

            9. -

              JSON چیه؟

              +

              JSON چیه؟

              JSON (JavaScript Object Notation) یه فرمت سبک وزن هس که برای تبادل داده‌ها استفاده می‌شه. این بر اساس زیرمجموعه ای از زبان جاواسکریپت‌ـه که اشیا در جاواسکریپت ساخته میشن.

              فهرست

            10. -

              قوانین فرمت JSON کدوما هستن؟

              +

              قوانین فرمت JSON کدوما هستن؟

              در زیر لیستی از قوانین نحوی JSON آمده است

              1. داده‌ها به صورت جفت نام/مقدار هستن

              2. @@ -3766,7 +4215,7 @@

                فهرست

              3. -

                هدف از متد JSON.stringify چیه؟

                +

                هدف از متد JSON.stringify چیه؟

              موقع ارسال داده‌ها به وب سرور، داده‌ها باید در قالب رشته‌ای باشن. شما می‌تونین با تبدیل شی `JSON` به رشته با استفاده از متد `stringify` به این هدف دست یابید.
              @@ -3785,7 +4234,7 @@ 

            11. -

              چطوری می‌تونیم یه رشته(string) JSON رو تجزیه کنیم؟

              +

              چطوری می‌تونیم یه رشته(string) JSON رو تجزیه کنیم؟

              موقع دریافت داده‌ها از یه وب سرور، داده‌ها همی‌شه در قالب رشته‌ای هستن. اما می‌تونین این مقدار رشته رو با استفاده از متد parse به یه شی جاواسکریپت تبدیل کنین.

              var userString = '{"name":"John","age":31}';
              @@ -3795,17 +4244,17 @@ 

              فهرست

            12. -

              چرا به JSON نیاز داریم؟

              +

              چرا به JSON نیاز داریم؟

              موقع تبادل داده بین مرورگر و سرور، داده‌ها فقط میتونن متنی باشن. از اونجایی که JSON فقط متنی است، می‌توان اونو به راحتی به سرور ارسال کرد و از اون به عنوان قالب داده توسط هر زبان برنامه‌نویسی استفاده کرد.

              فهرست

            13. -

              PWAها چی هستن؟

              +

              PWAها چی هستن؟

              Progressive web applications (PWAs) نوعی از برنامه‌های تلفن همراه هستن که از طریق وب ارائه میشن، و با استفاده از فناوری‌های رایج وب از جمله HTML، CSS و جاواسکریپت ساخته میشن،. این PWA‌ها در سرورها مستقر میشن، از طریق URL‌ها قابل دسترسی هستن و توسط موتورهای جستجو فهرست بندی میشن.

              فهرست

            14. -

              هدف از متد clearTimeout چیه؟

              +

              هدف از متد clearTimeout چیه؟

              تابع clearTimeout در جاواسکریپت برای پاک کردن بازه زمانی استفاده می‌شه که قبل از اون توسط تابع setTimeout تنظیم شده است. یعنی مقدار بازگشتی تابع setTimeout تو یه متغیر ذخیره می‌شه و برای پاک کردن تایمر به تابع clearTimeout منتقل می‌شه.

              برای مثال، از روش setTimeout زیر برای نمایش پیام پس از 3 ثانیه استفاده می‌شه. این مهلت زمانی رو می‌شه با روش clearTimeout پاک کرد.

              @@ -3827,7 +4276,7 @@

              فهرست

            15. -

              هدف از متد clearInterval چیه؟

              +

              هدف از متد clearInterval چیه؟

              تابع clearInterval تو جاواسکریپت برای پاک کردن فاصله ای که توسط تابع setInterval تنظیم شده استفاده می‌شه. برای مثال، مقدار بازگشتی که توسط تابع setInterval برمی گرده تو یه متغیر ذخیره می‌شه و برای پاک کردن فاصله به تابع clearInterval ارسال می‌شه.

              برای مثال، از روش setInterval زیر برای نمایش پیام در هر 3 ثانیه استفاده می‌شه. این بازه رو می‌شه با روش clearInterval پاک کرد.

              @@ -3849,7 +4298,7 @@

              فهرست

            16. -

              توی جاواسکریپت، چطوری می‌شه به یه صفحه جدید redirect انجام داد؟

              +

              توی جاواسکریپت، چطوری می‌شه به یه صفحه جدید redirect انجام داد؟

              در vanila جاواسکریپت، می‌تونین با استفاده از ویژگی location شی پنجره به صفحه جدیدی هدایت بشین.

              function redirect() {
              @@ -3859,7 +4308,7 @@ 

              فهرست

            17. -

              چطوری بررسی می‌کنین که یه string شامل یه substring هست یا نه؟

              +

              چطوری بررسی می‌کنین که یه string شامل یه substring هست یا نه؟

              3 روش ممکن برای بررسی اینکه آیا یه رشته دارای یه رشته فرعیه یا نه وجود داره.

              1. includes استفاده از متد: ES6 روش String.prototype.includes‍ رو برای آزمایش یه رشته حاوی یه رشته فرعی ارائه کرد.

              2. @@ -3885,7 +4334,7 @@

                فهرست

              3. -

                توی جاواسکریپت، چطوری مقدار یه آدرس email رو اعتبارسنجی می‌کنین؟

                +

                توی جاواسکریپت، چطوری مقدار یه آدرس email رو اعتبارسنجی می‌کنین؟

                می‌تونین با استفاده از Regex ایمیل رو در جاواسکریپت تأیید کنین. توصیه می‌شه به جای سمت کلاینت، اعتبارسنجی در سمت سرور انجام شه. چون جاواسکریپت رو می‌شه در سمت کلاینت غیرفعال کرد.

                function validateEmail(email) {
                @@ -3897,7 +4346,7 @@ 

                چطوری می‌تونیم مقدار آدرس url جاری رو بخونیم؟

                +

                چطوری می‌تونیم مقدار آدرس url جاری رو بخونیم؟

                می‌تونین از عبارت window.location.href برای دریافت مسیر آدرس فعلی استفاده کنین و می‌تونین از همون عبارت برای به‌روزرسانی URL هم استفاده کنین. همچنین می‌تونین از document.URL برای اهداف فقط خواندنی استفاده کنین اما این راه‌حل مشکلاتی در FF داره.

                console.log('location.href', window.location.href); // Returns full URL
                @@ -3905,7 +4354,7 @@ 

                فهرست

              4. -

                ویژگی‌های مختلف url روی object مربوط به history کدوما هستن؟

                +

                ویژگی‌های مختلف url روی object مربوط به history کدوما هستن؟

                برای دسترسی به اجزای URL صفحه می‌توان از ویژگی‌های شی location زیر استفاده کرد.

                1. href - ورودی URL

                2. @@ -3920,7 +4369,7 @@

                  فهرست

                3. -

                  توی جاواسکریپت چطوری می‌تونیم مقدار یه query-string رو بخونیم؟

                  +

                  توی جاواسکریپت چطوری می‌تونیم مقدار یه query-string رو بخونیم؟

                  می‌تونین از URLSearchParams برای دریافت مقادیر رشته پرس و جو در جاواسکریپت استفاده کنین. بیاین مثالی برای دریافت مقدار کد مشتری از رشته پرس و جو URL ببینیم،

                  const urlParams = new URLSearchParams(window.location.search);
                  @@ -3929,7 +4378,7 @@ 

                  فهرست

                4. -

                  چطوری می‌تونیم بررسی کنیم که آیا یه پراپرتی روی آبجکت وجود داره یا نه؟

                  +

                  چطوری می‌تونیم بررسی کنیم که آیا یه پراپرتی روی آبجکت وجود داره یا نه؟

                  1. استفاده از عملگر‌ها: شما می‌تونیم از عملگر in استفاده کنین که آیا کلیدی تو یه شی وجود داره یا نه

                  @@ -3960,7 +4409,7 @@

                  فهرست

                5. -

                  چطوری روی یه object حلقه میزنی؟

                  +

                  چطوری روی یه object حلقه میزنی؟

                  می‌تونین از حلقه for-in برای حلقه زدن شی جاواسکریپت استفاده کنین. همچنین می‌تونین مطمئن شین که کلیدی که دریافت می‌کنین یه ویژگی واقعی یه آبجکته و با استفاده از روش hasOwnProperty از نمونه اولیه نیست.

                  var object = {
                  @@ -3978,7 +4427,7 @@ 

                  فهرست

                6. -

                  چطوری تست می‌کنی که یه object خالیه؟

                  +

                  چطوری تست می‌کنی که یه object خالیه؟

                  راه حل‌های مختلفی بر اساس نسخه‌های ECMAScript وجود داره

                7. @@ -4011,7 +4460,7 @@

                  فهرست

                8. -

                  arguments object چیه؟

                  +

                  arguments object چیه؟

                  شیء آرگومان‌ها یه شیء آرایه ماننده که در داخل توابع قابل دسترسیه و حاوی مقادیر آرگومان‌های ارسال شده به اون تابعه. برای مثال، بیاین ببینیم چگونه از شیء آرگومان‌ها در تابع sum استفاده کنیم

                  function sum() {
                  @@ -4031,7 +4480,7 @@ 

                  فهرست

                9. -

                  چطوری حرف اول یه رشته رو به حرف بزرگ تبدیل می‌کنی؟

                  +

                  چطوری حرف اول یه رشته رو به حرف بزرگ تبدیل می‌کنی؟

                  می‌تونیم با درست کردن یه تابع که با استفاده از زنجیره ای از متد‌های استرینگ‌ها مثلا charAt و toUpperCase و slice یه استرنیگ با حرف اول بزرگ ایجاد کرد

                  function capitalizeFirstLetter(string) {
                  @@ -4041,14 +4490,14 @@ 

                  فهرست

                10. -

                  مزایا و معایب حلقه for چیا هستن؟

                  +

                  مزایا و معایب حلقه for چیا هستن؟

                  حلقه for یه سینتکس تکراری رایج در جاواسکریپت‌ـه که هم مزایا و هم معایب داره

                  -

                  مزایا

                  +

                  مزایا

                  1. توی همه‌ی محیط‌ها env کار می‌کنه

                  2. می‌تونیم از break و ‍continue‍ برای کنرل جریان داده استفاده کرد

                  -

                  معایب

                  +

                  معایب

                  1. پر هزینه

                  2. ضروریت

                  3. @@ -4057,7 +4506,7 @@

                    فهرست

                  4. -

                    چطوری تاریخ جاری رو توی جاواسکریپت نشون میدی؟

                    +

                    چطوری تاریخ جاری رو توی جاواسکریپت نشون میدی؟

                    شما می‌تونین از کلاس new Date استفاده کنین که یه آبجکت از زمان و تاریخ بهمون میده بریم یه مثال ازش ببینیم

                    var today = new Date();
                    @@ -4071,7 +4520,7 @@ 

                    فهرست

                  5. -

                    چطوری دو تا date object رو با هم مقایسه می‌کنی؟

                    +

                    چطوری دو تا date object رو با هم مقایسه می‌کنی؟

                    برای این کار باید از متد getTime که برا روی date قرار داره استفاده کرد و نباید از اپراتور‌ها استفاده کنیم

                    var d1 = new Date();
                    @@ -4082,7 +4531,7 @@ 

                    فهرست

                  6. -

                    چطوری بررسی می‌کنی که یه رشته با یه رشته دیگه شروع می‌شه؟

                    +

                    چطوری بررسی می‌کنی که یه رشته با یه رشته دیگه شروع می‌شه؟

                    ما می‌تونیم از متد startWith که بر روی پرتوتایپ رشته‌ها وجود داره استفاده کرد که یه رشته رو می‌گیره و چک می‌کنه که با اون شروع می‌شه رشته مورد نظر یا نه بریم یه مثال ببینیم در موردش

                    "Good morning".startsWith("Good"); // true
                    @@ -4091,7 +4540,7 @@ 

                    فهرست

                  7. -

                    چطوری یه رشته رو trim می‌کنی؟

                    +

                    چطوری یه رشته رو trim می‌کنی؟

                    جاواسکریپت یه متد به ما میده به اسم trim که روی استرینگ‌ها قرار داره با استفاده از این متد همه ی فضای خالی بین اون استرینگ برداشته می‌شه

                    "  Hello World   ".trim(); //Hello World
                    @@ -4111,7 +4560,7 @@ 

                    فهرست

                  8. -

                    توی جاواسکریپت چطوری می‌تونیم یه زوج مرتب از key یه valueها بسازیم؟

                    +

                    توی جاواسکریپت چطوری می‌تونیم یه زوج مرتب از key یه valueها بسازیم؟

                    برای اضافه کردن key جدید به ابجک‌ها دو روش وجود دارن

                    var object = {
                    @@ -4134,7 +4583,7 @@ 

                    فهرست

                  9. -

                    آیا عبارت '!--' عملگر خاصی هست؟

                    +

                    آیا عبارت '!--' عملگر خاصی هست؟

                    نه! اون یه اپراتور خاص نیست اما ترکیب شده دو تا اپراتور استانداره هستش یکی بعد اون یکی

                    1. اپراتور نقییض (!)

                    2. @@ -4144,7 +4593,7 @@

                      فهرست

                    3. -

                      چطوری می‌تونیم به متغیرهامون مقادیر اولیه بدیم؟

                      +

                      چطوری می‌تونیم به متغیرهامون مقادیر اولیه بدیم؟

                      می‌تونیم از عملگر یا اپراتور ‍|| استفاده تعریف یه مقدار پیش‌فرض استفاده کرد مانند مثال زیر

                      var a = b || c;
                      @@ -4153,7 +4602,7 @@ 

                      فهرست

                    4. -

                      چطوری می‌تونیم متن‌های چند خطی درست کنیم؟

                      +

                      چطوری می‌تونیم متن‌های چند خطی درست کنیم؟

                      ما می‌تونیم از / برای تعریف کردن رشته‌های چند لایه استفاده کنیم برای مثال

                      var str = "This is a \
                      @@ -4164,12 +4613,12 @@ 

                      فهرست

                    5. -

                      مدل app-shell چیه؟

                      +

                      مدل app-shell چیه؟

                      application shell (shell) یکی از راه‌های ساخت یه PWA هس که به طور قابل اعتماد و فوری بر روی صفحه نمایش کاربران شما بارگیری می‌شه، مشابه اونجه در برنامه‌های کاربردی بومی مشاهده می‌کنین. برای رسوندن سریع HTML اولیه به صفحه بدون شبکه مفیده.

                      فهرست

                    6. -

                      چطوری می‌تونیم روی یه تابع property اضافه کنیم؟

                      +

                      چطوری می‌تونیم روی یه تابع property اضافه کنیم؟

                      بله ما می‌تونیم برای توابع پراپرتی تعیین کنیم چون توابع اصولا آبجکت هستن.

                      fn = function(x) {
                      @@ -4185,7 +4634,7 @@ 

                      فهرست

                    7. -

                      چطوری می‌تونیم تعداد پارامترهای ورودی یه تابع رو به دست بیاریم؟

                      +

                      چطوری می‌تونیم تعداد پارامترهای ورودی یه تابع رو به دست بیاریم؟

                      با استفاده کردن از function.length ما می‌تونیم به تعداد پارامتر‌هایی که یه تابع انتظار داره بگیره دسترسی داشته باشیم بریم یه مثال درموردش ببینیم

                      function sum(num1, num2, num3, num4){
                      @@ -4196,12 +4645,12 @@ 

                      فهرست

                    8. -

                      Polyfill چیه؟

                      +

                      Polyfill چیه؟

                      یه plyfill یه قسمت از کد جاوااسکریپته که با استفاده از اون ما می‌تونیم توابع پیشرفته رو روی مروگر‌هایی که به طور طبیعی پشتیبانی نمیکنن,استفاده کنیم. پلاگین Silverlight که برای تقلید کردن توابع بر روی canvas یا مروگر IE7 استفاده کرد

                      فهرست

                    9. -

                      عبارات Break و continue چی هستن؟

                      +

                      عبارات Break و continue چی هستن؟

                      دستور break برای "پرش به بیرون" از یه حلقه استفاده می‌شه. یعنی حلقه رو می شکنه و اجرای کد رو بعد از حلقه ادامه میده.

                      for (i = 0; i < 10; i++) {
                      @@ -4219,7 +4668,7 @@ 

                      فهرست

                    10. -

                      توی جاواسکریپت labelها چیکار می‌کنن؟

                      +

                      توی جاواسکریپت labelها چیکار می‌کنن؟

                      دستور label به ما اجازه می ده تا حلقه‌ها و بلوک‌ها رو در جاواسکریپت نام گذاری کنیم. سپس می‌تونیم از این برچسب‌ها برای مراجعه به کد بعداً استفاده کنیم. برای مثال، کد زیر با برچسب‌ها از چاپ اعداد در صورت یکسان بودن اونا جلوگیری می‌کنه.

                      var i, j;
                      @@ -4243,7 +4692,7 @@ 

                      فهرست

                    11. -

                      مزایای declare کردن متغیرها در اوایل کد چیه؟

                      +

                      مزایای declare کردن متغیرها در اوایل کد چیه؟

                      توصیه می‌شه تمام اعلان‌ها رو بالای هر اسکریپت یا تابع نگه دارین. مزیت این کار

                      1. کد ما تمیز تر می‌شه

                      2. @@ -4254,7 +4703,7 @@

                        فهرست

                      3. -

                        مزایای مقداردهی اولیه متغیرها چیه؟

                        +

                        مزایای مقداردهی اولیه متغیرها چیه؟

                        توضیه می‌شه که مقدار اولیه برای متغیرها تعیین بشه که دلایلشو چک می‌کنیم

                        1. خروجیمون کد تمیز تری می‌شه

                        2. @@ -4264,7 +4713,7 @@

                          فهرست

                        3. -

                          روش توصیه شده برای ایجاد object چیه؟

                          +

                          روش توصیه شده برای ایجاد object چیه؟

                          برای ساخت یه object با مقادیر پیشفرش مثال‌های زیر روش‌های ساخت مقادیر پیشفرض رو بررسی می‌کنیم

                          1. استفاده از {} به جای new Object

                          2. @@ -4288,7 +4737,7 @@

                            فهرست

                          3. -

                            چطوری می‌تونیم آرایه‌ JSON تعریف کنیم؟

                            +

                            چطوری می‌تونیم آرایه‌ JSON تعریف کنیم؟

                            آرایه‌های JSON نوشته شده در داخل براکت‌ها و ارایه‌هایی که دارای object هستن بریم یه مثال درموردش ببینیم

                            "users":[
                            @@ -4300,7 +4749,7 @@ 

                            فهرست

                          4. -

                            چطوری می‌تونیم اعداد تصادفی تولید کنیم؟

                            +

                            چطوری می‌تونیم اعداد تصادفی تولید کنیم؟

                            ما می‌تونیم از متد Math.random برای ساخت یه عدد رندوم بین ۰ تا یه و از متد Math.floor برای رند کردن اون عدد استفاده کنیم حالا حاصل عدد به دست اومده رو ضربدر ده کنیم عددی بین یه تا ده خواهیم داشت

                            Math.floor(Math.random() * 10) + 1;     // returns a random integer from 1 to 10
                            @@ -4310,7 +4759,7 @@ 

                            فهرست

                          5. -

                            می‌تونی یه تابع تولید اعداد تصادفی توی یه بازه مشخص بنویسی؟

                            +

                            می‌تونی یه تابع تولید اعداد تصادفی توی یه بازه مشخص بنویسی؟

                            بله ما می‌تونیم این تابع رو داشته باشیم که مقادیر حداکثر و حداقل رو بگیره و برای ما عدد رندوم ایجاد کنه

                            function randomInteger(min, max) {
                            @@ -4322,22 +4771,22 @@ 

                            فهرست

                          6. -

                            Tree-shaking چیه؟

                            +

                            Tree-shaking چیه؟

                            Tree Shaking نوعی حذف کد مرده هستش. این بد این معنیه که ماژول‌های استفاده نشده در طول فرآیند ساخت در بسته گنجونده نمی‌شن و برای اون بر ساختار استاتیک ماژول ES2015 متکیه (یعنی import و export). در ابتدا این باندلر ماژول ES2015 'rollup' رایج شد.

                            فهرست

                          7. -

                            دلایل نیاز به tree-shaking کدوما هستن؟

                            +

                            دلایل نیاز به tree-shaking کدوما هستن؟

                            Tree Shaking می‌تونه اندازه کد رو در هر برنامه ای به میزان قابل توجهی کاهش بده. یعنی هرچی کد کمتری از طریق سیم بفرستیم برنامه کاربردی تره. به عنوان مثال، اگر فقط بخواهیم یه برنامه Hello World با استفاده از چارچوب‌های SPA ایجاد کنیم، حدود چند مگابایت طول می کشد، اما با tree-shaking می‌تونه اندازه رو به چند صد کیلوبایت کاهش بده. tree-shaking در باندلرهای Rollup و Webpack پیاده سازی شده.

                            فهرست

                          8. -

                            آیا استفاده از eval توصیه می‌شه؟

                            +

                            آیا استفاده از eval توصیه می‌شه؟

                            خیر، اجازه اجرای کد دلخواه رو میده که باعث ایجاد مشکل امنیتی می‌شه. همونطور که میدونیم از تابع eval برای اجرای متن به عنوان کد استفاده می‌شه. در بیشتر موارد استفاده از اون ضروری نیست.

                            فهرست

                          9. -

                            Regular-Expression چیه؟

                            +

                            Regular-Expression چیه؟

                            regular expression یا همون Regex یه توالیه که یه ساختار جستجو ایجاد می‌کنه با استفاده از این ساختاذ ما می‌تونیم دیتامون رو بر اساس یه ساختار که مینویسم جستجو کنیم و به قولی دیتامون رو اعتبارسنجی کنیم

                            /pattern/modifiers;
                            @@ -4349,7 +4798,7 @@ 

                            فهرست

                          10. -

                            متدهای رشته که روی Regular-expression مجاز هستن کدوماست؟

                            +

                            متدهای رشته که روی Regular-expression مجاز هستن کدوماست؟

                            Regular Expressions دو تا متد برای رشته‌ّها داره :‌ search و replace. متد search یه عبارت رو می‌گیره اونو جسنجو می‌کنه و محل اون عبارت رو برمی‌گردونه

                            var msg = "Hello John";
                            @@ -4363,7 +4812,7 @@ 

                            فهرست

                          11. -

                            توی Regex بخش modifiersها چیکار می‌کنه؟

                            +

                            توی Regex بخش modifiersها چیکار می‌کنه؟

                            Modifier میتونن زمانی استفاده بشن که به جستجو‌های بدون حروف کوچک و بزرگ سراسری نیاز داریم بیاین یه مثال درموردشون ببینیم

  33. @@ -4396,7 +4845,7 @@

    فهرست

  34. -

    پترن‌های regular-expression چیه؟

    +

    پترن‌های regular-expression چیه؟

    Regex یه گروهی از ساختار‌ها برامون اماده کرده که با اونا کاراکتر‌ها رو چک کنیم اونا تو سه مدل طبفه بندی میشن

    1. براکت‌ها: این‌ها استفاده میشن تا یه رنجی از کاراکتر رو پیدا کنن
      @@ -4418,7 +4867,7 @@

      فهرست

    2. -

      آبجکت RegExp چیه؟

      +

      آبجکت RegExp چیه؟

      object‌های Regex یه عبارت معمولی با پراپرتی‌ها و متد‌های تعریف شده از قبل هس. بریم یه مثال از نحوه استفادشون ببینیم.

      var regexp = new RegExp('\\w+');
      @@ -4428,7 +4877,7 @@ 

      فهرست

    3. -

      چطوری روی یه رشته دنبال یه پترن RegExp می‌گردی؟

      +

      چطوری روی یه رشته دنبال یه پترن RegExp می‌گردی؟

      می‌تونین از متد test عبارت منظم برای جستجوی یه رشته برای الگو استفاده کنین و بسته به نتیجه، true یا false رو برگردونین.

      var pattern = /you/;
      @@ -4437,7 +4886,7 @@ 

      فهرست

    4. -

      هدف از متد exec چیه؟

      +

      هدف از متد exec چیه؟

      هدف متد exec شبیه به روش تست است، اما جستجوی یه تطابق تو یه رشته مشخص رو انجام میده و یه آرایه نتیجه یا null رو به جای برگردوندن true/false برمی‌گردونه.

      var pattern = /you/;
      @@ -4446,7 +4895,7 @@ 

      فهرست

    5. -

      چطوری استایل‌های یه المنت HTML رو تغییر میدی؟

      +

      چطوری استایل‌های یه المنت HTML رو تغییر میدی؟

      شما می‌تونین سبک درون خطی یا اسم کلاس یه عنصر HTML رو با استفاده از جاواسکریپت تغییر بدین

      1. استفاده از پراپرتی استایل: با استفاده از ویژگی style می‌تونین استایل درون خطی رو تغییر بدین

      2. @@ -4463,12 +4912,12 @@

        فهرست

      3. -

        نتیجه عبارت 1+2+'3' چی می‌شه؟

        +

        نتیجه عبارت 1+2+'3' چی می‌شه؟

        خروجی '33' می‌شه. از اونجایی که «1» و «2» مقادیر عددی هستن، نتیجه دو رقم اول یه مقدار عددی «3» خواهد بود. رقم بعدی یه مقدار نوع رشته اس چون افزودن مقدار عددی «3» و مقدار رشته «3» فقط یه مقدار الحاقی «33» می‌شه.

        فهرست

      4. -

        عبارت debugger چیکار می‌کنه؟

        +

        عبارت debugger چیکار می‌کنه؟

        دستور debugger هر گونه عملکرد اشکال زدایی موجود رو فراخوانی می‌کنه، مانند تعیین breakpoint. اگه هیچ عملکرد اشکال زدایی در دسترس نباشه، این عبارت تاثیری نداره.
        برای مثال، در تابع زیر یه دستور debugger درج شده. بنابراین
        اجرا در دستور debugger مانند یه breakpoint در منبع اسکریپت متوقف می‌شه.

        @@ -4482,12 +4931,12 @@

        فهرست

      5. -

        هدف از breakpointها توی debugging چیه؟

        +

        هدف از breakpointها توی debugging چیه؟

        پس از اجرای دستور debugger و باز شدن پنجره دیباگر، می‌تونین breakpointها رو در کد جاواسکریپت تنظیم کنین. در هر breakpoint، جاواسکریپت اجرا نمی‌شه و به شما اجازه میده مقادیر جاواسکریپت رو بررسی کنین. پس از بررسی مقادیر، می‌تونین با استفاده از دکمه پخش، اجرای کد رو از سر بگیرید.

        فهرست

      6. -

        آیا می‌تونیم از عبارت‌های رزرو شده در تعریف identifierها(اسم متغیر، کلاس و ...) استفاده کنیم؟

        +

        آیا می‌تونیم از عبارت‌های رزرو شده در تعریف identifierها(اسم متغیر، کلاس و ...) استفاده کنیم؟

        نه، شما نمی‌تونین از کلمات رزرو شده به عنوان متغیر، برچسب، اسم آبجکت یا تابع استفاده کنین. بیاین یه مثال ساده رو ببینیم،

        var else = "hello"; // Uncaught SyntaxError: Unexpected token else
        @@ -4495,7 +4944,7 @@ 

        فهرست

      7. -

        چطوری تشخیص بدیم که یه مرورگر mobile هست یا نه؟

        +

        چطوری تشخیص بدیم که یه مرورگر mobile هست یا نه؟

        ما می‌تونیم با استفاده از Regex که یه boolean به ما برمی‌گردونه بفهمیم که مرورگری که کاربر داره ازش استفاده می‌کنه چیه.

        window.mobilecheck = function() {
        @@ -4507,7 +4956,7 @@ 

        فهرست

      8. -

        چطوری بدون Regex تشخیص بدیم که یه مرورگر mobile هست یا نه؟

        +

        چطوری بدون Regex تشخیص بدیم که یه مرورگر mobile هست یا نه؟

        می‌تونیم مرورگرهای تلفن همراه رو با اجرای فهرستی از دستگاه‌ها و بررسی اینکه آیا useragent با چیزی مطابقت داره یا نه، شناسایی کنیم. این یه راه حل جایگزین برای استفاده از RegExp هستش

        function detectmob() {
        @@ -4529,7 +4978,7 @@ 

        فهرست

      9. -

        چطوری طول و عرض یه تصویر رو با جاواسکریپت به دست میاری؟

        +

        چطوری طول و عرض یه تصویر رو با جاواسکریپت به دست میاری؟

        ما می‌تونیم با استفاده از جاواسکریپت به صورت برنامه ریزی شده تصویر رو بدست بیاریم و ابعاد (عرض و ارتفاع) رو بررسی کنیم.

        var img = new Image();
        @@ -4541,7 +4990,7 @@ 

        فهرست

      10. -

        چطوری درخواست‌های synchronous HTTP بزنیم؟

        +

        چطوری درخواست‌های synchronous HTTP بزنیم؟

        مرورگرها یه شی XMLHttpRequest ارائه می‌دن که می‌تونه برای ایجاد درخواست‌های HTTP همزمان از جاواسکریپت استفاده شه.

        function httpGet(theUrl) {
        @@ -4554,7 +5003,7 @@ 

        فهرست

      11. -

        چطوری درخواست‌های asynchronous HTTP بزنیم؟

        +

        چطوری درخواست‌های asynchronous HTTP بزنیم؟

        مرورگرها یه شی XMLHttpRequest رو ارائه می‌دن که می‌تونن برای درخواست‌های HTTP ناهمزمان از جاواسکریپت با ارسال پارامتر سوم به عنوان true استفاده کنن.

        function httpGetAsync(theUrl, callback)
        @@ -4571,7 +5020,7 @@ 

        فهرست

      12. -

        چطوری یه تاریخ رو به یه تاریخ در timezone دیگه تبدیل کنیم؟

        +

        چطوری یه تاریخ رو به یه تاریخ در timezone دیگه تبدیل کنیم؟

        می‌تونیم از متد toLocaleString برای تبدیل تاریخ‌ها تو یه منطقه زمانی به منطقه زمانی دیگر استفاده کنیم.بریم یه مثال درموردش ببینیم.

        console.log(event.toLocaleString('en-GB', { timeZone: 'UTC' })); //29/06/2019, 09:56:00
        @@ -4579,7 +5028,7 @@ 

        فهرست

      13. -

        چه propertyهایی برای اندازه‌گیزی سایز window به کار میره؟

        +

        چه propertyهایی برای اندازه‌گیزی سایز window به کار میره؟

        می‌تونیم از ویژگی‌های innerWidth، innerHeight، clientWidth، clientHeight ویندوز، عنصر document و اشیاء بدنه document برای یافتن اندازه یه پنجره استفاده کنیم. بیاین از ترکیب اونا برای محاسبه اندازه یه window یا document استفاده کنیم.

        var width = window.innerWidth
        @@ -4593,7 +5042,7 @@ 

        فهرست

      14. -

        عملگر شرطی سه گانه توی جاواسکریپت چیه؟

        +

        عملگر شرطی سه گانه توی جاواسکریپت چیه؟

        عملگر شرطی (ternary) تنها عملگر جاواسکریپت هستش که سه عملوند رو می‌گیره که به عنوان میانبر برای دستور if عمل می‌کنه.

        var isAuthenticated = false;
        @@ -4602,7 +5051,7 @@ 

        فهرست

      15. -

        آیا می‌شه روی عملگر شرطی زنجیره شرط‌ها رو اعمال کرد؟

        +

        آیا می‌شه روی عملگر شرطی زنجیره شرط‌ها رو اعمال کرد؟

        بله، می‌تونیم زنجیره‌سازی رو روی عملگرهای شرطی مشابه if … else if … else if… other chain اعمال کنیم.

        function traceValue(someParam) {
        @@ -4624,7 +5073,7 @@ 

        فهرست

      16. -

        روش‌های اجرای جاواسکریپت بعد از لود شدن صفحه کدوما هستن؟

        +

        روش‌های اجرای جاواسکریپت بعد از لود شدن صفحه کدوما هستن؟

        1. window.onload:

        @@ -4646,7 +5095,7 @@

        فهرست

      17. -

        تفاوت‌های بین proto و prototype کدوما هستن؟

        +

        تفاوت‌های بین proto و prototype کدوما هستن؟

        آبجکت‌ای __proto__ آبجکت واقعیه که در زنجیره جستجو برای حل متدها و غیره استفاده می‌شه. در حالی که prototype آبجکت‌ای‌ـه که برای ساخت __proto__استفاده می‌شه زمانی که یه آبجکت با جدید ایجاد می‌کنین.

        ( new Employee ).__proto__ === Employee.prototype;
        @@ -4655,7 +5104,7 @@ 

        فهرست

      18. -

        میتونی یه مثال از زمانی که واقعا به سمیکولون(😉 نیاز هست بزنی؟

        +

        میتونی یه مثال از زمانی که واقعا به سمیکولون( ; ) نیاز هست بزنی؟

        توصیه می‌شه بعد از هر عبارت در جاواسکریپت از نقطه ویرگول استفاده کنیم. برای مثال، در مورد زیر به دلیل از دست دادن نقطه ویرگول، خطای .. is not a function رو در زمان اجرا میندازه.

        // define a function
        @@ -4677,10 +5126,10 @@ 

        })();

        در این حالت، تابع دوم رو به عنوان آرگومان به تابع اول ارسال می‌کنیم و سعی می‌کنیم نتیجه فراخوانی تابع اول رو به عنوان تابع فراخوانی کنیم. از این رو، تابع دوم با خطای.. is not a function در زمان اجرا ارور می‌گیریم.

        -

        فهرست

        +

        فهرست

      19. -

        متد freeze چیکار می‌کنه؟

        +

        متد freeze چیکار می‌کنه؟

        متد freeze برای فریز کردن یه آبجکت استفاده می‌شه. ثابت کردن یه آبجکت اجازه افزودن ویژگی‌های جدید به یه آبچکت رو نمی‌ده. از حذفش جلوگیری می‌کنه و از تغییر قابلیت شمارش پذیری، پیکربندی یا قابلیت نوشتن ویژگی‌های موجود جلوگیری می‌کنه. یعنی آبچکتء ارسال شده رو برمی‌گردونه و کپی ثابتی ایجاد نمی‌کنه.

        const obj = {
        @@ -4696,7 +5145,7 @@ 

        فهرست

      20. -

        هدف از متد freeze چیه؟

        +

        هدف از متد freeze چیه؟

        1. برای فریز کردن آبجکت‌ها و آرایه‌ها

        2. برای imutable کردن آبجکت‌ها

        3. @@ -4704,12 +5153,12 @@

          فهرست

        4. -

          چرا به متد freeze نیاز داریم؟

          +

          چرا به متد freeze نیاز داریم؟

          در پارادایم شی گرا، یه API موجود حاوی عناصر خاصیه که قصد توسعه، اصلاح یا استفاده مجدد در خارج از زمینه فعلی خود رو ندارن. از این رو، این کلمه کلیدیه final که در زبان‌های مختلف استفاده می‌شه.

          فهرست

        5. -

          چطوری می‌تونیم زبان ترجیحی یه مرورگر رو تشخیص بدیم؟

          +

          چطوری می‌تونیم زبان ترجیحی یه مرورگر رو تشخیص بدیم؟

          ما می‌تونیم از آبجکت navigator گه بر روری مرورگر وجود داره این کارو انجام بدیم

          var language = navigator.languages && navigator.languages[0] || // Chrome / Firefox
          @@ -4721,7 +5170,7 @@ 

          فهرست

        6. -

          چطوری می‌تونیم حرف اول همه کلمات یه رشته رو به حرف بزرگ تبدیل کنیم؟

          +

          چطوری می‌تونیم حرف اول همه کلمات یه رشته رو به حرف بزرگ تبدیل کنیم؟

          این کار باعث می‌شه که حرف اول یه رشته به صورت بزرگ(زبان انگلیسی) نشون داده بشه که ما می‌تونیم با تابع زیر این کارو انجام بدیم

              function toTitleCase(str) {
          @@ -4737,7 +5186,7 @@ 

          فهرست

        7. -

          چطوری می‌شه تشخیص داد که جاواسکریپت یه صفحه وب غیرفعال شده؟

          +

          چطوری می‌شه تشخیص داد که جاواسکریپت یه صفحه وب غیرفعال شده؟

          برای تشخیص غیرفعال بودن یا نبودن جاواسکریپت می‌تونین از تگ <noscript> استفاده کنین. بلوک کد داخل <noscript> زمانی اجرا می‌شه که جاواسکریپت غیرفعال است، و معمولاً برای نمایش محتوای جایگزین زمانی که صفحه در جاواسکریپت تولید می‌شه، استفاده می‌شه.

          <script type="javascript">
          @@ -4750,7 +5199,7 @@ 

          فهرست

        8. -

          عملگرهای پشتیبانی شده توسط جاواسکریپت کدوما هستن؟

          +

          عملگرهای پشتیبانی شده توسط جاواسکریپت کدوما هستن؟

          یه عملگر قادر به دستکاری (محاسبات ریاضی و منطقی) مقدار یا عملوند معینه. اپراتورهای مختلفی توسط جاواسکریپت پشتیبانی میشن این اپراتور‌ها هستن

          1. عملگر‌های حسابی: شامل + (اضافه),– (منها), * (ضرب), / (تقسیم), % (درصد), + + (اضافه کردن) و – – (کم کردن)

          2. @@ -4763,7 +5212,7 @@

            فهرست

          3. -

            پارامتر rest چیکار می‌کنه؟

            +

            پارامتر rest چیکار می‌کنه؟

            پارامتر Rest یه روش بهبود یافته برای مدیریت پارامترهای تابع هستش که به ما امکان میده تعداد نامحدودی از آرگومان‌ها رو به عنوان یه آرایه نمایش بدیم

            function f(a, b, ...theArgs) {
            @@ -4788,7 +5237,7 @@ 

            فهرست

          4. -

            اگه پارامتر rest رو به عنوان آخرین پارامتر استفاده نکنیم چی می‌شه؟

            +

            اگه پارامتر rest رو به عنوان آخرین پارامتر استفاده نکنیم چی می‌شه؟

            پارامتر ‍‍Rest باید آخرین آرگومان باشه، چون وظیفه اش جمع آوری تمام آرگومان‌های باقی مونده تو یه آرایه اس. برای مثال، اگه تابعیو مثل زیر تعریف کنیم معنی نداره و یه خطا ایجاد می کنه.

            function someFunc(a,…b,c){
            @@ -4799,7 +5248,7 @@ 

            فهرست

          5. -

            عملگرهای منطقی باینری توی جاواسکریپت کدوما هستن؟

            +

            عملگرهای منطقی باینری توی جاواسکریپت کدوما هستن؟

            1. به صورت بیتی AND ( & )

            2. به صورت بیتی OR ( | )

            3. @@ -4812,7 +5261,7 @@

              فهرست

            4. -

              عملگر spread چیکار می‌کنه؟

              +

              عملگر spread چیکار می‌کنه؟

              عملگر Spread به تکرارپذیرها (آرایه‌ها / اشیاء / رشته‌ها) اجازه میده تا به آرگومان‌ها / عناصر منفرد گسترش پیدا کنن. برای مشاهده این رفتار مثالی بزنیم،

              function calculateSum(x, y, z) {
              @@ -4826,7 +5275,7 @@ 

              فهرست

            5. -

              چطوری تشخیص میدی که یه آبجکت freeze شده یا نه؟

              +

              چطوری تشخیص میدی که یه آبجکت freeze شده یا نه؟

              متد Object.isFrozen برای تعیین اینکه آیا یه آبجکت منجمد هس یا نه استفاده می‌شه. اگه همه شرایط زیر درست باشه، یه آبجکت منجمد می‌شه.

              1. اگه قابل توسعه نباشه.

              2. @@ -4843,7 +5292,7 @@

                فهرست

              3. -

                چطوری بررسی کنیم که دو تا مقدار(شامل آبجکت) با هم برابرن یا نه؟

                +

                چطوری بررسی کنیم که دو تا مقدار(شامل آبجکت) با هم برابرن یا نه؟

                متد Object.is تعیین می‌کنه که آیا دو مقدار یه مقدار هستن یا نه. برای مثال، استفاده با انواع مختلف مقادیر،

                Object.is('hello', 'hello');     // true
                @@ -4866,7 +5315,7 @@ 

                فهرست

              4. -

                هدف از متد is روی object چیه؟

                +

                هدف از متد is روی object چیه؟

                1. برای مقایسه دو رشته استفاده می‌شه.

                2. برای مقایسه دو عدد استفاده می‌شه.

                3. @@ -4876,7 +5325,7 @@

                  فهرست

                4. -

                  چطوری propertyهای یه object رو به یه object دیگه کپی می‌کنی؟

                  +

                  چطوری propertyهای یه object رو به یه object دیگه کپی می‌کنی؟

                  می‌تونین از متد Object.assign استفاده کنین که برای کپی کردن مقادیر و ویژگی‌ها از یه یا چند آبچکت منبع به یه آبچکت هدف استفاده می‌شه. آبچکت مورد نظر رو که دارای خواص و مقادیر کپی شده از آبچکت مورد نظر است، برمی‌گردونه.

                  Object.assign(target, ...sources)
                  @@ -4896,7 +5345,7 @@ 

                  فهرست

                5. -

                  کاربردهای ممتد assign چیه؟

                  +

                  کاربردهای ممتد assign چیه؟

                  1. برای شبیه سازی یه شی استفاده می‌شه.

                  2. برای ادغام اشیاء با ویژگی‌های یکسان استفاده می‌شه.

                  3. @@ -4904,7 +5353,7 @@

                    فهرست

                  4. -

                    آبجکت proxy چیه؟

                    +

                    آبجکت proxy چیه؟

                    آبجکت Proxy برای تعریف رفتار سفارشی برای عملیات‌های اساسی مثل جستجوی ویژگی، تخصیص، شمارش، فراخوانی تابع و غیره استفاده می‌شه.

                    var p = new Proxy(target, handler);
                    @@ -4930,7 +5379,7 @@ 

                    فهرست

                  5. -

                    هدف از متد seal چیه؟

                    +

                    هدف از متد seal چیه؟

                    روش Object.seal برای مهر و موم کردن یه آبجکت با جلوگیری از اضافه شدن ویژگی‌های جدید بهش و علامت گذاری تمام ویژگی‌های موجود به عنوان غیر قابل تنظیم، استفاده می‌شه. اما مقادیر پراپرتی‌های فعلی تا زمانی که قابل نوشتن باشن , قابل تغییر هستن. بیاین مثال زیرو برای درک بیشتر در مورد روش seal ببینیم

                     const object = {
                    @@ -4945,7 +5394,7 @@ 

                    فهرست

                  6. -

                    کاربردهای متد seal چیه؟

                    +

                    کاربردهای متد seal چیه؟

                    1. برای آب بندی آبجکت‌ها و آرایه‌ها استفاده می‌شه.

                    2. برای غیرقابل تغییر کردن یه آبجکت استفاده می‌شه.

                    3. @@ -4953,12 +5402,12 @@

                      فهرست

                    4. -

                      تفاوت‌های بین متدهای freeze و seal چیا هست؟

                      +

                      تفاوت‌های بین متدهای freeze و seal چیا هست؟

                      اگه یه آبجکت با استفاده از متد Object.freeze منجمد شه، ویژگی‌هاش تغییرناپذیر می‌شن و هیچ تغییری در اونا نمیتونیم ایجاد کنیم در حالی که اگه یه آبجکت با استفاده از متد Object.seal مهر و موم شده باشه، می‌توان تغییرات رو در ویژگی‌های موجود ایجاد کرد. از آبجکت

                      فهرست

                    5. -

                      چطوری تشخیص میدی که یه آبجکت seal شده یا نه؟

                      +

                      چطوری تشخیص میدی که یه آبجکت seal شده یا نه؟

                      متد Object.isSealed برای تعیین مهر و موم بودن یا نبودن یه آبجکت استفاده می‌شه. اگه همه شرایط زیر درست باشه یه شی مهر و موم می‌شه

                      1. اگه قابل توسعه نباشه.

                      2. @@ -4978,7 +5427,7 @@

                        فهرست

                      3. -

                        چطوری کلید و مقدارهای enumerable رو به دست میاری؟

                        +

                        چطوری کلید و مقدارهای enumerable رو به دست میاری؟

                        متد Object.entries برای برگردوندن آرایه‌ای از جفت‌های [key, value] دارای کلید رشته‌ای شمارش‌پذیر یه شی معین، به همان ترتیبی که توسط یه حلقه for...in ارائه می‌شود، استفاده می‌شود. بیاین عملکرد متد object.entries را تو یه مثال ببینیم،

                        متد Object.entries برای برگردوندن آرایه‌ای از جفت‌های [key, value] دارای کلید رشته‌ای شمارش‌پذیر یه شی معین، به همون ترتیبی که توسط یه حلقه for...in ارائه می‌شه، استفاده می‌شه. بیاین عملکرد متد object.entries رو تو یه مثال ببینیم،

                        @@ -4996,7 +5445,7 @@

                        تفاوت‌های بین متدهای Object.values و Object.entries چیا هست؟

                        +

                        تفاوت‌های بین متدهای Object.values و Object.entries چیا هست؟

                        رفتار متد Object.values مشابه روش Object.entries هست اما به جای جفت [key,value] آرایه ای از مقادیر را برمی گرداند.

                        const object = {
                        @@ -5011,7 +5460,7 @@ 

                        فهرست

                      4. -

                        چطوری لیست کلیدهای یه object رو بدست میاری؟

                        +

                        چطوری لیست کلیدهای یه object رو بدست میاری؟

                        می‌تونین از متد Object.keys استفاده کنین که برای برگردوندن آرایه‌ای از اسم ویژگی‌های یه شی معین استفاده می‌شه، به همون ترتیبی که با یه حلقه معمولی دریافت می‌کنیم. برای مثال:

                        const user = {
                        @@ -5025,7 +5474,7 @@ 

                        فهرست

                      5. -

                        چطوری یه object با prototype درست می‌کنی؟

                        +

                        چطوری یه object با prototype درست می‌کنی؟

                        متد Object.create برای ایجاد یه object جدید با object نمونه اولیه و ویژگی‌های مشخص شده استفاده می‌شه. برای مثال، از یه object موجود به عنوان نمونه اولیه object جدید ایجاد شده استفاده می‌کنه. یه object جدید رو با object نمونه اولیه و ویژگی‌های مشخص شده برمی‌گردونه.

                         const user = {
                        @@ -5044,7 +5493,7 @@ 

                        فهرست

                      6. -

                        WeakSet چیه؟

                        +

                        WeakSet چیه؟

                        WeakSet برای ذخیره مجموعه ای از اشیاء ضعیف (مرجع ضعیف) استفاده می‌شه.

                        new WeakSet([iterable]);
                        @@ -5061,7 +5510,7 @@ 

                        فهرست

                      7. -

                        تفاوت‌های بین WeakSet و Set کدوما هستن؟

                        +

                        تفاوت‌های بین WeakSet و Set کدوما هستن؟

                        تفاوت اصلی اینه که ارجاع به اشیاء تو Set قویه در حالی که ارجاع به اشیا تو WeakSet ضعیفه. برای مثال، یه شی تو WeakSet میتونه زباله جمع آوری شه اگه مرجع دیگری به اون وجود نداشته باشه.
                        تفاوت‌های دیگر عبارتند از

                          @@ -5073,7 +5522,7 @@

                          فهرست

                        1. -

                          لیست متدهایی که رو WeakSet قابل استفاده هستن رو می‌تونی بگی؟

                          +

                          لیست متدهایی که رو WeakSet قابل استفاده هستن رو می‌تونی بگی؟

                          در زیر لیستی از روش‌های موجود در WeakSet آمده است،

                          1. add(value): یه شی جدید با مقدار داده شده به مجموعه ضعیف اضافه می‌شه

                          2. @@ -5096,7 +5545,7 @@

                            فهرست

                          3. -

                            WeakMap چیه؟

                            +

                            WeakMap چیه؟

                            آبجکت WeakMap مجموعه ای از جفت‌های کلید/مقداره که تو اون کلیدها به صورت ضعیف ارجاع داده شدن. در این حالت، کلیدها باید اشیا باشن و مقادیر میتونن مقادیر دلخواه باشن.برای مثال:

                            new WeakMap([iterable])
                            @@ -5113,7 +5562,7 @@ 

                            فهرست

                          4. -

                            تفاوت‌های بین WeakMap و Map کدوما هستن؟

                            +

                            تفاوت‌های بین WeakMap و Map کدوما هستن؟

                            تفاوت اصلی اینه که ارجاعات به آبجکت‌ها کلیدی در نقشه قوی هستن در حالی که ارجاعات به اشیاء کلیدی در WeakMap ضعیف هستن. برای مثال، یه شی کلیدی در WeakMap در صورتی که هیچ مرجع دیگری بهش وجود نداشته باشه، میتونه زباله جمع آوری شه.
                            تفاوت‌های دیگر عبارتند از

                              @@ -5125,7 +5574,7 @@

                              فهرست

                            1. -

                              لیست متدهایی که رو WeakMap قابل استفاده هستن رو می‌تونی بگی؟

                              +

                              لیست متدهایی که رو WeakMap قابل استفاده هستن رو می‌تونی بگی؟

                              1. set(key, value): مقدار کلید رو در شی WeakMap تنظیم می‌کنه. شی WeakMap رو برمی‌گردونه.

                              2. delete(key): هر مقدار مربوط به کلید رو حذف می‌کنه.

                              3. @@ -5147,7 +5596,7 @@

                                فهرست

                              4. -

                                هدف از متد uneval چیه؟

                                +

                                هدف از متد uneval چیه؟

                                uneval یه تابع داخلی‌ـه که برای ایجاد نمایش رشته‌ای از کد منبع یه شی استفاده می‌شه. این یه تابع سطح بالاس و با هیچ آبجکت‌ای مرتبط نیست. بیاین مثال زیر رو درموردش ببینیم،

                                var a = 1;
                                @@ -5157,7 +5606,7 @@ 

                                فهرست

                              5. -

                                چطوری یه URL رو encode می‌کنی؟

                                +

                                چطوری یه URL رو encode می‌کنی؟

                                تابع encodeURI برای رمزگذاری URI کامل استفاده می‌شه که دارای کاراکترهای خاص به جز (, / ? : @ & = + $ #) هست.

                                var uri = 'https://mozilla.org/?x=шеллы';
                                @@ -5167,7 +5616,7 @@ 

                                فهرست

                              6. -

                                چطوری یه URL رو decode می‌کنی؟

                                +

                                چطوری یه URL رو decode می‌کنی؟

                                تابع decodeURI برای رمزگشایی یه شناسه منبع یکنواخت (URI) که قبلا توسط encodeURI ایجاد شده اس استفاده می‌شه.

                                 var uri = 'https://mozilla.org/?x=шеллы';
                                @@ -5182,7 +5631,7 @@ 

                                فهرست

                              7. -

                                چطوری محتوای یه صفحه رو پرینت می‌گیری؟

                                +

                                چطوری محتوای یه صفحه رو پرینت می‌گیری؟

                                شی window یه متد print ارائه می‌کنه که برای چاپ محتویات پنجره فعلی استفاده می‌شه. یه کادر محاوره ای چاپ رو باز می‌کنه که به شما امکان میده بین گزینه‌های مختلف چاپ انتخاب کنین. بیاین استفاده از روش چاپ رو تو یه مثال ببینیم،

                                <input type="button" value="Print" onclick="window.print()" />
                                @@ -5191,7 +5640,7 @@ 

                                فهرست

                              8. -

                                تفاوت‌های بین uneval و eval چیا هستن؟

                                +

                                تفاوت‌های بین uneval و eval چیا هستن؟

                                تابع 'uneval' منبع یه شی معین رو برمی‌گردونه. در حالی که تابع "eval" با ارزیابی اون کد منبع تو یه ناحیه حافظه متفاوت، برعکس عمل می‌کنه. بیاین مثالی رو برای روشن شدن تفاوت ببینیم،

                                var msg = uneval(function greeting() { return 'Hello, Good morning'; });
                                @@ -5201,7 +5650,7 @@ 

                                فهرست

                              9. -

                                تابع anonymous چیه؟

                                +

                                تابع anonymous چیه؟

                                تابع ناشناس یه تابع بدون نام است! توابع ناشناس معمولاً به یه نام متغیر اختصاص داده می شن یا به عنوان یه تابع فراخوانی استفاده میشن بریم یه مثال در موردش ببینیم،

                                function (optionalParameters) {
                                @@ -5225,7 +5674,7 @@ 

                                فهرست

                              10. -

                                تفاوت تقدم بین متغیرهای local و global چطوریه؟

                                +

                                تفاوت تقدم بین متغیرهای local و global چطوریه؟

                                یه متغیر محلی بر یه متغیر سراسری با همین نام ارجحیت داره. بیاین این رفتار رو تو یه مثال ببینیم.

                                var msg = "Good morning";
                                @@ -5238,7 +5687,7 @@ 

                                فهرست

                              11. -

                                accessorهای جاواسکریپت چیکار می‌کنن؟

                                +

                                accessorهای جاواسکریپت چیکار می‌کنن؟

                                ECMAScript 5 دسترسی‌های شی جاواسکریپت یا ویژگی‌های محاسبه‌شده رو از طریق گیرنده‌ها و تنظیم‌کندنه‌ها معرفی کرد. Getters از کلمه کلیدی "get" استفاده می‌کنه در حالی که Setters از کلمه کلیدی "set" استفاده می‌کنه.

                                var user = {
                                @@ -5259,7 +5708,7 @@ 

                                فهرست

                              12. -

                                چطوری روی constructor یه Object یه مقدار تعریف می‌کنی؟

                                +

                                چطوری روی constructor یه Object یه مقدار تعریف می‌کنی؟

                                متد استاتیک Object.defineProperty برای تعریف یه ویژگی جدید به طور مستقیم بر روی یه آبجکت یا تغییر ویژگی موجود روی یه آبجکت استفاده می‌شه و آبجکت رو برمی‌گردونه. بیاین مثالی رو ببینیم تا بدونیم چجوری ویژگی رو تعریف کنیم،

                                const newObject = {};
                                @@ -5277,12 +5726,12 @@ 

                                فهرست

                              13. -

                                تفاوت‌های بین get و defineProperty چیا هست؟

                                +

                                تفاوت‌های بین get و defineProperty چیا هست؟

                                هر دو نتایج مشابهی دارن مگه اینکه از کلاس‌ها استفاده کنین. اگه از «get» استفاده می‌کنین ویژگی روی نمونه اولیه شی تعریف می‌شه، در حالی که با استفاده از «Object.defineProperty»، ویژگی روی نمونه‌ای که بهش اعمال می‌شه، تعریف می‌شه.

                                فهرست

                              14. -

                                مزایای استفاده از Getter و Setter چیه؟

                                +

                                مزایای استفاده از Getter و Setter چیه؟

                                1. اونا نحو ساده تری ارائه می دهند

                                2. اونا برای تعریف ویژگی‌های محاسبه شده یا دسترسی‌ها در JS استفاده میشن

                                3. @@ -5293,7 +5742,7 @@

                                  فهرست

                                4. -

                                  می‌تونیم getter و setter رو با استفاده از متد defineProperty تعریف کنیم؟

                                  +

                                  می‌تونیم getter و setter رو با استفاده از متد defineProperty تعریف کنیم؟

                                  بله، می‌تونین از روش Object.defineProperty» برای اضافه کردن Getters و Setter استفاده کنین. برای مثال،آبجکت شمارنده زیر از ویژگی‌های افزایش، کاهش، جمع و تفریق استفاده می‌کنه.

                                  var obj = {counter : 0};
                                  @@ -5322,7 +5771,7 @@ 

                                  فهرست

                                5. -

                                  هدف استفاده از switch-case چیه؟

                                  +

                                  هدف استفاده از switch-case چیه؟

                                  عبارت switch case در جاواسکریپت برای اهداف تصمیم گیری استفاده می‌شه. در چند مورد، استفاده از دستور switch case راحت‌تر از if-else است. بریم یه مثال در موردش ببینیم،

                                  switch (expression)
                                  @@ -5346,7 +5795,7 @@ 

                                  فهرست

                                6. -

                                  چه قواعدی برای استفاده از swtich-case باید رعایت بشه؟

                                  +

                                  چه قواعدی برای استفاده از swtich-case باید رعایت بشه؟

                                  1. عبارت میتونه از نوع عددی یا رشته‌ای باشه.

                                  2. مقادیر تکراری برای عبارت مجاز نیستن.

                                  3. @@ -5357,7 +5806,7 @@

                                    فهرست

                                  4. -

                                    نوع داده‌های primitive کدوما هستن؟

                                    +

                                    نوع داده‌های primitive کدوما هستن؟

                                    یه نوع داده اولیه، داده‌ایه که دارای یه مقدار اولیه اس (که هیچ ویژگی یا روشی نداره). 5 نوع نوع داده اولیه وجود داره.

                                    1. رشته‌ها

                                    2. @@ -5369,7 +5818,7 @@

                                      فهرست

                                    3. -

                                      روش‌های مختلف دسترسی به propertyهای object کدوما هستن؟

                                      +

                                      روش‌های مختلف دسترسی به propertyهای object کدوما هستن؟

                                      1. Dot notation: از نقطه برای دسترسی به ویژگی‌ها استفاده می‌کنه

                                      @@ -5391,7 +5840,7 @@

                                      فهرست

                                    4. -

                                      قوانین پارامترهای توابع کدوما هستن؟

                                      +

                                      قوانین پارامترهای توابع کدوما هستن؟

                                      1. تعاریف تابع انواع داده‌ها رو برای پارامترها مشخص نمی‌کنه.

                                      2. بررسی نوع آرگومان‌های ارسال شده رو انجام نبدین.

                                      3. @@ -5407,7 +5856,7 @@

                                        فهرست

                                      4. -

                                        آبجکت error چیه؟

                                        +

                                        آبجکت error چیه؟

                                        یه error object یه آبجکت خطای داخلیه که موقع بروز خطا، اطلاعات خطا رو ارائه میده. این دو ویژگی داره: نام و پیام. برای مثال، تابع زیر جزئیات خطا رو ثبت می‌کنه،

                                        try {
                                        @@ -5420,7 +5869,7 @@ 

                                        فهرست

                                      5. -

                                        چه موقعی خطای syntax دریافت می‌کنیم؟

                                        +

                                        چه موقعی خطای syntax دریافت می‌کنیم؟

                                        اگه بخواهید کد رو با یه خطای نحوی ارزیابی کنین یه SyntaxError پرتاب می‌شه. برای مثال، نقل قول زیر برای پارامتر تابع یه خطای نحوی ایجاد می‌کنه

                                        try {
                                        @@ -5433,7 +5882,7 @@ 

                                        فهرست

                                      6. -

                                        عنوان خطاهای مختلف که روی error-object برمیگردن کدوما هستن؟

                                        +

                                        عنوان خطاهای مختلف که روی error-object برمیگردن کدوما هستن؟

  35. @@ -5471,7 +5920,7 @@

    فهرست

  36. -

    عبارات مختلف که در هنگام مدیریت error استفاده میشن کدوما هستن؟

    +

    عبارات مختلف که در هنگام مدیریت error استفاده میشن کدوما هستن؟

    1. try: این عبارت برای آزمایش یه بلوک کد برای خطاها استفاده می‌شه

    2. catch: این عبارت برای رسیدگی به خطا استفاده می‌شه

    3. @@ -5481,7 +5930,7 @@

      فهرست

    4. -

      دو نوع مختلف حلفه‌ها در جاواسکریپت کدوما هستن؟

      +

      دو نوع مختلف حلفه‌ها در جاواسکریپت کدوما هستن؟

      1. Entry Controlled loops: در این نوع حلقه، شرایط تست قبل از ورود به بدنه حلقه آزمایش می‌شه. برای مثال For Loop و while Loop در این دسته قرار می‌گیرن.

      2. Exit Controlled Loops: در این نوع حلقه، شرایط تست در انتهای بدنه حلقه آزمایش یا ارزیابی می‌شه. یعنی بدنه حلقه حداقل یه بار بدون در نظر گرفتن شرایط تست true یا false اجرا می‌شه. برای مثال، حلقه do-while در این دسته قرار می‌گیره.

      3. @@ -5489,17 +5938,17 @@

        فهرست

      4. -

        nodejs چیه؟

        +

        nodejs چیه؟

        Node.js یه پلتفرم سمت سروره که بر اساس زمان اجرا جاواسکریپت کروم برای ساخت آسان برنامه‌های شبکه سریع و مقیاس پذیر ساخته شده. این یه زمان اجرا I/O ناهمزمان مبتنی بر رویداد، غیر مسدود کننده اس که از موتور جاواسکریپت V8 گوگل و کتابخانه libuv استفاده می‌کنه.

        فهرست

      5. -

        آبجکت Intl چیه؟

        +

        آبجکت Intl چیه؟

        آبجکت Intl فضای نامی برای ECMAScript Internationalization API اس که مقایسه رشته‌های حساس زبان، قالب بندی اعداد و قالب بندی تاریخ و زمان رو ارائه میده. دسترسی به چندین سازنده و توابع حساس به زبان رو فراهم می‌کنه.

        فهرست

      6. -

        چطوری تاریخ و زمان رو بر اساس زبان جاری سیستم کاربر نمایش بدیم؟

        +

        چطوری تاریخ و زمان رو بر اساس زبان جاری سیستم کاربر نمایش بدیم؟

        می‌تونین از شی «Intl.DateTimeFormat» استفاده کنین که سازنده آبجکت‌هاییه که قالب بندی تاریخ و زمان حساس به زبان رو فعال می‌کنه. بیاین این رفتار رو با یه مثال ببینیم،

        var date = new Date(Date.UTC(2019, 07, 07, 3, 0, 0));
        @@ -5509,12 +5958,12 @@ 

        فهرست

      7. -

        Iterator چیه؟

        +

        Iterator چیه؟

        Iterator آبجکت‌ای‌ـه که پس از خاتمه، یه توالی و یه مقدار بازگشتی رو تعریف می‌کنه. پروتکل Iterator رو با متد «next» پیاده‌سازی می‌کنه که یه شی رو با دو ویژگی برمی‌گردونه: «value» (مقدار بعدی در دنباله) و «done» (که اگه آخرین مقدار در دنباله مصرف شده باشه درسته. ).

        فهرست

      8. -

        حلفه‌های synchronous(همزمان) چطوری کار می‌کنن؟

        +

        حلفه‌های synchronous(همزمان) چطوری کار می‌کنن؟

        تکرار همزمان در ES6 معرفی شد و با مجموعه ای از اجزای زیر کار می‌کنه:

        Iterable: این یه آبجکت‌ای‌ـه که میتونه از طریق روشی که کلید اون Symbol.iterator هس تکرار شه.
        Iterator: این یه آبجکت‌ای‌ـه که با فراخوانی «[Symbol.iterator]» بر روی یه تکرار برگردانده می‌شه. این آبجکت تکرار شونده هر عنصر تکرار شده رو تو یه آبجکت پیچیده می‌کنه و اونو از طریق متد «next» یکی یکی برمی‌گردونه.
        @@ -5531,13 +5980,13 @@

        فهرست

      9. -

        Event-loop چیه؟

        +

        Event-loop چیه؟

        event loop یه صف از توابع callback موقعی که یه تابع async اجرا می‌شه، تابع callback در صف قرار می‌گیرد. موتور جاواسکریپت پردازش حلقه رویداد رو شروع نمی‌کنه تا زمانی که تابع async اجرای کد رو به پایان برساند.
        نکته: این به Node.js اجازه میده تا عملیات I/O غیر مسدود کننده رو انجام بده حتی اگه جاواسکریپت تک رشته‌ای باشه.

        فهرست

      10. -

        Call-stack چیه؟

        +

        Call-stack چیه؟

        Call Stack یه ساختار داده برای مفسران جاواسکریپت‌ـه تا فراخوانی‌های تابع در برنامه رو پیگیری کنه. دو عمل عمده داره،

        1. هر زمان که یه تابع رو برای اجرای آن فراخوانی می‌کنین اونو به پشته هل می بدین.

        2. @@ -5566,11 +6015,11 @@

          فهرست

        3. -

          Event-queue چیه؟

          +

          Event-queue چیه؟

          فهرست

        4. -

          Decorator چیه؟

          +

          Decorator چیه؟

          دکوراتور عبارتیه که یه تابع رو ارزیابی می‌کنه و هدف، نام و توصیف‌کننده تزئین رو به عنوان آرگومان می‌گیره. همچنین، به صورت اختیاری یه توصیفگر دکوراتور رو برای نصب بر روی آبچکت مورد نظر برمی‌گردونه. بیاین در زمان طراحی، دکوراتور ادمین رو برای کلاس کاربر تعریف کنیم،

          function admin(isAdmin) {
          @@ -5592,7 +6041,7 @@ 

          فهرست

        5. -

          مقادیر موجود روی آبجکت Intl کدوما هستن؟

          +

          مقادیر موجود روی آبجکت Intl کدوما هستن؟

          1. Collator: اینا آبجکت‌هایی هستن که مقایسه رشته‌های حساس به زبان رو امکان پذیر می‌کنن.

          2. DateTimeFormat: اینا آبجکت‌هایی هستن که قالب بندی تاریخ و زمان حساس به زبان رو فعال می‌کنن.

          3. @@ -5604,7 +6053,7 @@

            فهرست

          4. -

            عملگر Unary چیه؟

            +

            عملگر Unary چیه؟

            عملگر unary(+) برای تبدیل یه متغیر به عدد استفاده می‌شه. اگه متغیر قابل تبدیل نباشه، همچنان به عدد تبدیل می‌شه اما با مقدار NaN. بیاین این رفتار رو تو یه عمل ببینیم.

            var x = "100";
            @@ -5618,7 +6067,7 @@ 

            فهرست

          5. -

            چطوری المنت‌های موجود تو یه آرایه رو مرتب می‌کنی؟

            +

            چطوری المنت‌های موجود تو یه آرایه رو مرتب می‌کنی؟

            متد sort برای مرتب سازی عناصر یه آرایه در جای خود استفاده می‌شه و آرایه مرتب شده رو برمی‌گردونه. استفاده از مثال زیر خواهد بود،

            var months = ["Aug", "Sep", "Jan", "June"];
            @@ -5628,7 +6077,7 @@ 

            فهرست

          6. -

            هدف از تابع مرتب‌سازی موقع استفاده از متد sort چیه؟

            +

            هدف از تابع مرتب‌سازی موقع استفاده از متد sort چیه؟

            از compareFunction برای تعریف ترتیب مرتب سازی استفاده می‌شه. اگه حذف شه، عناصر آرایه به رشته تبدیل می‌شن، سپس بر اساس مقدار نقطه کد یونیکد هر کاراکتر مرتب میشن بیاین مثالی بزنیم تا کاربرد compareFunction رو ببینیم،

            let numbers = [1, 2, 5, 3, 4];
            @@ -5638,7 +6087,7 @@ 

            فهرست

          7. -

            چطوری آیتم‌های یه آرایه رو معکوس مرتب کنیم؟

            +

            چطوری آیتم‌های یه آرایه رو معکوس مرتب کنیم؟

            برای معکوس کردن عناصر یه آرایه می‌تونین از متد reverse استفاده کنین. این روش برای مرتب کردن یه آرایه به ترتیب نزولی مفید است. بیاین استفاده از متد reverse رو تو یه مثال ببینیم،

            let numbers = [1, 2, 5, 3, 4];
            @@ -5649,7 +6098,7 @@ 

            فهرست

          8. -

            چطوری حداقل و حداکثر مقدار یه آرایه رو بدست بیاریم؟

            +

            چطوری حداقل و حداکثر مقدار یه آرایه رو بدست بیاریم؟

            می‌تونین از روش‌های «Math.min» و «Math.max» روی متغیرهای آرایه برای یافتن حداقل و حداکثر عناصر تو یه آرایه استفاده کنین. بیاین دو تابع برای پیدا کردن مقدار min و max تو یه آرایه ایجاد کنیم.

            var marks = [50, 20, 70, 60, 45, 30];
            @@ -5666,7 +6115,7 @@ 

            فهرست

          9. -

            چطوری حداقل و حداکثر مقدار یه آرایه رو بدون استفاده از متدهای Math بدست بیاریم؟

            +

            چطوری حداقل و حداکثر مقدار یه آرایه رو بدون استفاده از متدهای Math بدست بیاریم؟

            ما میتونیم توابعی بنویسیم که تو یه آرایه حلقه می زنن و هر مقدار را با کمترین یا بالاترین مقدار مقایسه می کنن تا مقادیر حداقل و حداکثر رو پیدا کنن. بریم یه مثال درموردش ببینیم.

             var marks = [50, 20, 70, 60, 45, 30];
            @@ -5698,7 +6147,7 @@ 

            فهرست

          10. -

            عبارت خالی چیه و هدف از استفاده ازش چیه؟

            +

            عبارت خالی چیه و هدف از استفاده ازش چیه؟

            ویرگول (😉 هس که نشون میده هیچ دستوری اجرا نخواهد شد، حتی اگه نحو جاواسکریپت به اون نیاز داشته باشه. از اونجایی که هیچ اقدامی با دستور خالی وجود نداره، ممکنه فکر کنین که استفاده از اون خیلی کمه اما دستور خالی گاهی اوقات موقعی مفیده که می‌خواین حلقه ای ایجاد کنین که بدنش خالیه. برای مثال، می‌تونین یه آرایه با مقادیر صفر رو مانند زیر مقدارههی اولیه کنین.

            // Initialize an array a
            @@ -5707,7 +6156,7 @@ 

            فهرست

          11. -

            چطوری metadata یه ماژول رو بدست میاری؟ meta data of a module

            +

            چطوری metadata یه ماژول رو بدست میاری؟ meta data of a module

            میتونیم از آبجکت import.meta‍ استفاده کنیم که یه ویژگی متاعه که متا داده‌های متنی خاص رو تو یه ماژول جاوا اسکریپت قرار می‌ده. این شامل اطلاعاتی در مورد ماژول فعلی، مانند URL ماژوله. در مرورگرها، ممکنه متا داده های متفاوتی نسبت به NodeJS دریافت کنیم.

            <script type="module" src="welcome-module.js"></script>
            @@ -5716,7 +6165,7 @@ 

            فهرست

          12. -

            عملگر comma چیه و چیکار می‌کنه؟

            +

            عملگر comma چیه و چیکار می‌کنه؟

            عملگر کاما برای ارزیابی هر یه از عملوندهاش از چپ به راست استفاده می‌شه و مقدار آخرین عملوند رو برمی‌گردونه. این کاملاً با استفاده از کاما در آرایه‌ها، اشیاء و آرگومان‌ها و پارامترهای تابع متفاوته. بریم یه مثال در موردش ببینیم.

            var x = 1;
            @@ -5727,7 +6176,7 @@ 

            فهرست

          13. -

            مزایای استفاده از عملگر comma چیه؟

            +

            مزایای استفاده از عملگر comma چیه؟

            معمولاً برای گنجوندن چندین عبارت در مکانی که به یه عبارت واحد نیاز داره استفاده می‌شه. یکی از کاربردهای رایج این عملگر کاما، ارائه چندین پارامتر تو یه حلقه «for» است. برای مثال، حلقه for زیر از چند عبارت تو یه مکان واحد با استفاده از عملگر کاما استفاده می‌کنه.

            for (var a = 0, b =10; a <= 10; a++, b--)
            @@ -5742,7 +6191,7 @@ 

            فهرست

          14. -

            Typescript چیه؟

            +

            Typescript چیه؟

            TypeScript یه ابر مجموعه تایپ شده از جاواسکریپت‌ـه که توسط مایکروسافت ایجاد شده که انواع اختیاری، کلاس‌ها، async/wait و بسیاری ویژگی‌های دیگر رو اضافه می‌کنه و به جاواسکریپت ساده کامپایل می‌کنه. Angular به طور کامل در TypeScript ساخته شده و به عنوان زبان اصلی استفاده می‌شه. شما می‌تونین اونو به صورت گلوبال نصب کنین

            npm install -g typescript
            @@ -5761,7 +6210,7 @@ 

            فهرست

          15. -

            تفاوت‌های بین javascript و typescript کدوما هستن؟

            +

            تفاوت‌های بین javascript و typescript کدوما هستن؟

  37. @@ -5801,7 +6250,7 @@

    فهرست

  38. -

    مزایای typescript نسبت به javascript چیاست؟

    +

    مزایای typescript نسبت به javascript چیاست؟

    1. TypeScript میتونه خطاهای زمان کامپایل رو فقط در زمان توسعه پیدا کنه و باعث می‌شه خطاهای زمان اجرا کمتر شه. در حالی که جاواسکریپت یه زبان تفسیر شده است.

    2. TypeScript به شدت تایپ می‌شه یا از تایپ استاتیک پشتیبانی می‌کنه که امکان بررسی صحت نوع رو در زمان کامپایل فراهم می‌کنه. این در جاواسکریپت در دسترس نیست.

    3. @@ -5810,7 +6259,7 @@

      فهرست

    4. -

      object-initializer چیه؟

      +

      object-initializer چیه؟

      یه آبجکت اولیه عبارتیه که مقدار دهی اولیه یه آبجکت رو توصیف می‌کنه. نحو این عبارت به صورت فهرستی با کاما از صفر یا چند جفت نام ویژگی و مقادیر مرتبط یه آبجکت، محصور در پرانتزهای فرفری ({}) نشون داده می‌شه. این همچنین به عنوان نماد تحت اللفظی شناخته می‌شه. یکی از راه‌های ایجاد یه آبجکته.

      var initObject = {a: 'John', b: 50, c: {}};
      @@ -5820,7 +6269,7 @@ 

      فهرست

    5. -

      متد constructor چیه؟

      +

      متد constructor چیه؟

      متد سازنده یه متد خاص برای ایجاد و مقدارههی اولیه یه آبجکت ایجاد شده تو یه کلاس است. اگه متد سازنده رو مشخص نکنین از سازنده پیش فرض استفاده می‌شه. بریم یه مثال در موردش ببینیم.

      class Employee {
      @@ -5836,7 +6285,7 @@ 

      فهرست

    6. -

      اگه متد constructor رو بیش از یه بار توی کلاس بنویسیم چی می‌شه؟

      +

      اگه متد constructor رو بیش از یه بار توی کلاس بنویسیم چی می‌شه؟

      "سازنده" تو یه کلاس یه متد خاصه و باید فقط یه بار تو یه کلاس تعریف شه. برای مثال، اگه یه متد سازنده رو بیش از یه بار تو یه کلاس بنویسین، یه خطای «SyntaxError» ایجاد می‌کنه.

       class Employee {
      @@ -5855,7 +6304,7 @@ 

      فهرست

    7. -

      چطوری متد constructor کلاس والد رو صدا بزنیم؟

      +

      چطوری متد constructor کلاس والد رو صدا بزنیم؟

      می‌تونین از کلمه کلیدی super برای فراخوانی سازنده کلاس والد استفاده کنین. به یاد داشته باشیم که «super» باید قبل از استفاده از مرجع «this» فراخوانی شه. در غیر این صورت باعث خطای مرجع می‌شه. بیاین از اون استفاده کنیم،

      class Square extends Rectangle {
      @@ -5876,7 +6325,7 @@ 

      فهرست

    8. -

      چطوری prototype یه object رو به دست میاری؟

      +

      چطوری prototype یه object رو به دست میاری؟

      می‌تونین از روش Object.getPrototypeOf(obj) برای برگردوندن نمونه اولیه شی مشخص شده استفاده کنین. یعنی مقدار ویژگی «نمونه اولیه» داخلی. اگه هیچ ویژگی ارثی وجود نداشته باشه، مقدار "null" برگردانده می‌شه.

      const newPrototype = {};
      @@ -5887,7 +6336,7 @@ 

      فهرست

    9. -

      اگه به متد getPrototype رشته پاس بدیم چی می‌شه؟

      +

      اگه به متد getPrototype رشته پاس بدیم چی می‌شه؟

      در ES5، اگه پارامتر obj یه شی نباشه، یه استثنا TypeError ایجاد می‌کنه. در حالی که در ES2015، پارامتر به یه «شیء» اجباری می‌شه.

      // ES5
      @@ -5898,7 +6347,7 @@ 

      فهرست

    10. -

      چطوری prototype یه object روی یه object دیگه ست کنیم؟

      +

      چطوری prototype یه object روی یه object دیگه ست کنیم؟

      می‌تونین از متد «Object.setPrototypeOf» استفاده کنین که نمونه اولیه (یعنی ویژگی داخلی «Prototype») یه شی مشخص شده رو روی یه شی دیگر یا تهی تنظیم می‌کنه. برای مثال، اگه می‌خواین نمونه اولیه یه جسم مربع رو روی شی مستطیلی تنظیم کنین به صورت زیر است:

      Object.setPrototypeOf(Square.prototype, Rectangle.prototype);
      @@ -5907,7 +6356,7 @@ 

      فهرست

    11. -

      چطوری بررسی می‌کنی که یه object قابل extend هست یا نه؟

      +

      چطوری بررسی می‌کنی که یه object قابل extend هست یا نه؟

      متد Object.isExtensible` برای تعیین اینکه یه شی قابل توسعه هس یا نه استفاده می‌شه. یعنی اینکه میتونه ویژگی‌های جدیدی به اون اضافه شه یا نه.

      const newObject = {};
      @@ -5917,7 +6366,7 @@ 

      فهرست

    12. -

      چطوری جلوی extend یه object رو بگیریم؟

      +

      چطوری جلوی extend یه object رو بگیریم؟

      متد «Object.preventExtensions» برای جلوگیری از افزودن ویژگی‌های جدید به یه شی استفاده می‌شه. به عبارت دیگر، از پسوندهای بعدی به شی جلوگیری می‌کنه. بیاین استفاده از این ویژگی رو ببینیم،

      const newObject = {};
      @@ -5934,7 +6383,7 @@ 

      فهرست

    13. -

      روش‌های مختلف برای تبدیل یه object به object غیرقابل extend چیه؟

      +

      روش‌های مختلف برای تبدیل یه object به object غیرقابل extend چیه؟

      شما می‌تونین یه شی غیر قابل گسترش رو به 3 روش علامت گذاری کنین.

      1. Object.preventExtensions

      2. @@ -5956,7 +6405,7 @@

        فهرست

      3. -

        چطوری propertyهای متعددی رو روی یه object تعریف می‌کنی؟

        +

        چطوری propertyهای متعددی رو روی یه object تعریف می‌کنی؟

        متد «Object.defineProperties» برای تعریف یا اصلاح ویژگی‌های موجود مستقیماً روی یه شی و برگردوندن شی استفاده می‌شه. بیاین چندین ویژگی رو روی یه شی خالی تعریف کنیم،

        const newObject = {};
        @@ -5972,12 +6421,12 @@ 

        فهرست

      4. -

        منظور از MEAN توی جاواسکریپت چیه؟ javascript

        +

        منظور از MEAN توی جاواسکریپت چیه؟ javascript

        پشته MEAN (MongoDB، Express، AngularJS و Node.js) محبوب‌ترین پشته فناوری نرم‌افزار جاواسکریپت منبع بازه که برای ساخت برنامه‌های وب پویا در دسترسه، جایی که می‌تونین نیمه‌های سمت سرور و سمت مشتری پروژه وب رو بنویسین. کاملا در جاواسکریپت

        فهرست

      5. -

        Obfuscation توی جاواسکریپت چیه و چیکار می‌کنه؟ javascript

        +

        Obfuscation توی جاواسکریپت چیه و چیکار می‌کنه؟ javascript

        مبهم سازی عمل عمدی ایجاد کد جاواسکریپت مبهم (یعنی کد منبع یا ماشین) هس که درک اون برای انسان سخته. این چیزی شبیه به رمزگذاریه، اما یه ماشین میتونه کد رو درک کنه و اونو اجرا کنه.
        بیاین تابع زیر رو قبل از Obfuscation ببینیم،

        @@ -5992,7 +6441,7 @@

        فهرست

      6. -

        چه نیازی به Obfuscate کردن داریم؟

        +

        چه نیازی به Obfuscate کردن داریم؟

        1. اندازه کد کمتر میشه. بنابراین انتقال داده بین سرور و مشتری سریع تر انجام میشه.

        2. این منطق کسب و کار رو از دنیای خارج پنهان می‌کنه و از کد در برابر دیگران محافظت می‌کنه

        3. @@ -6002,12 +6451,12 @@

          فهرست

        4. -

          Minification چیه؟

          +

          Minification چیه؟

          Minification حذف تمام کاراکترهای غیر ضروریه (فضاهای خالی حذف می‌شن) و متغیرها بدون تغییر در عملکر اون تغییر نام می دن همچنین نوعی مبهمه.

          فهرست

        5. -

          مزایای minification یا کم حجم‌سازی چیه؟

          +

          مزایای minification یا کم حجم‌سازی چیه؟

          به طور معمول توصیه می‌شه برای ترافیک سنگین و نیازهای فشرده منابع از Minification استفاده کنین. اندازه فایل رو با مزایای زیر کاهش میده

          1. زمان بارگذاری یه صفحه وب رو کاهش میده

          2. @@ -6016,7 +6465,7 @@

            فهرست

          3. -

            تفاوت‌های بین Obfuscation و Encryption چیه؟

            +

            تفاوت‌های بین Obfuscation و Encryption چیه؟

  39. @@ -6046,7 +6495,7 @@

    فهرست

  40. -

    ابزارهای مختلف برای minification کدوما هستن؟

    +

    ابزارهای مختلف برای minification کدوما هستن؟

    1. کامپایلر بسته شدن گوگل

    2. UglifyJS2

    3. @@ -6057,7 +6506,7 @@

      فهرست

    4. -

      چطوری اعتبارسنجی فرم رو با javascript انجام میدی؟

      +

      چطوری اعتبارسنجی فرم رو با javascript انجام میدی؟

      از جاواسکریپت می‌شه برای اعتبار سنجی فرم HTML استفاده کرد. برای مثال، اگه فیلد فرم خالی باشه، تابع باید اطلاع بده و false رو برگرداند تا از ارسال فرم جلوگیری شه.
      اجازه بدین ورود کاربر رو در فرم html انجام بدیم،

      @@ -6079,7 +6528,7 @@

      فهرست

    5. -

      چطوری اعتبارسنجی فرم رو بدون javascript انجام میدی؟

      +

      چطوری اعتبارسنجی فرم رو بدون javascript انجام میدی؟

      می‌تونین بدون استفاده از جاواسکریپت اعتبار سنجی فرم HTML رو به صورت خودکار انجام بدین. اعتبار سنجی با اعمال ویژگی «لازم» برای جلوگیری از ارسال فرم زمانی که ورودی خالیه فعال می‌شه.

      <form method="post">
      @@ -6091,7 +6540,7 @@ 

      فهرست

    6. -

      متدهای موجود روی DOM برای اعتبارسنجی کدوما هستن؟

      +

      متدهای موجود روی DOM برای اعتبارسنجی کدوما هستن؟

      روش‌های DOM زیر برای اعتبارسنجی محدودیت در ورودی نامعتبر موجود است.

      1. checkValidity: اگه یه عنصر ورودی حاوی داده‌های معتبر باشه، مقدار true رو برمی‌گردونه.

      2. @@ -6111,7 +6560,7 @@

        فهرست

      3. -

        مقادیر موجود روی DOM برای اعتبارسنجی کدوما هستن؟

        +

        مقادیر موجود روی DOM برای اعتبارسنجی کدوما هستن؟

        در زیر لیستی از بعضی از ویژگی‌های DOM اعتبارسنجی محدودیت موجود است،

        1. validity: فهرستی از ویژگی‌های بولین مربوط به اعتبار یه عنصر ورودی رو ارائه میده.

        2. @@ -6121,7 +6570,7 @@

          فهرست

        3. -

          مقادیر موجود روی input برای اعتبارسنجی کدوما هستن؟

          +

          مقادیر موجود روی input برای اعتبارسنجی کدوما هستن؟

          ویژگی اعتبار یه عنصر ورودی مجموعه ای از ویژگی‌های مربوط به اعتبار داده‌ها رو ارائه میده.

          1. customError: اگه یه پیام اعتبار سفارشی تنظیم شده باشه، true رو برمی‌گردونه.

          2. @@ -6137,7 +6586,7 @@

            فهرست

          3. -

            یه مثال از استفاده ویژگی rangeOverflow می‌تونی بزنی؟

            +

            یه مثال از استفاده ویژگی rangeOverflow می‌تونی بزنی؟

            اگه مقدار یه عنصر از ویژگی max آن بیشتر باشه، ویژگی rangeOverflow مقدار true رو برمی‌گردونه. برای مثال، فرم ارسالی زیر اگه مقدار آن بیش از 100 باشه، خطا میده.

            <input id="age" type="number" max="100">
            @@ -6153,7 +6602,7 @@ 

            فهرست

          4. -

            جاواسکریپت قابلیت استفاده از enum رو پیش‌فرض توی خودش داره؟

            +

            جاواسکریپت قابلیت استفاده از enum رو پیش‌فرض توی خودش داره؟

            نه، جاواسکریپت به صورت بومی از enum‌ها پشتیبانی نمی‌کنه. اما انواع مختلفی از راه‌حل‌ها برای شبیه‌سازی اونا وجود داره، اگرچه ممکنه معادل‌های دقیقی ارائه نکنن. برای مثال، می‌تونین از فریز یا مهر و موم روی شی استفاده کنین

            var DaysEnum = Object.freeze({"monday":1, "tuesday":2, "wednesday":3, ...})
            @@ -6161,7 +6610,7 @@ 

            فهرست

          5. -

            enum چیه؟

            +

            enum چیه؟

            enum نوعیه که متغیرها رو به یه مقدار از مجموعه ای از ثابت‌های از پیش تعریف شده محدود می‌کنه. جاواسکریپت هیچ enum نداره اما تایپ اسکریپت از enum داخلی پشتیبانی می‌کنه.

            enum Color {
            @@ -6171,7 +6620,7 @@ 

            فهرست

          6. -

            چطوری همه propertyهای یه object رو به دست بیاریم؟

            +

            چطوری همه propertyهای یه object رو به دست بیاریم؟

            می‌تونین از متد Object.getOwnPropertyNames» استفاده کنین که آرایه‌ای از تمام ویژگی‌هایی رو که مستقیماً تو یه شیء داده شده یافت می‌شه، برمی‌گردونه. بیاین استفاده از اونو تو یه مثال بیان کنیم،

            const newObject = {
            @@ -6185,7 +6634,7 @@ 

            فهرست

          7. -

            چطوری get property descriptors of an object

            +

            چطوری get property descriptors of an object

            می‌تونین از متد Object.getOwnPropertyDescriptors» استفاده کنین که تمام توصیف‌گرهای ویژگی یه شی معین رو برمی‌گردونه. مثال استفاده از این روش در زیر آمده است

             const newObject = {
            @@ -6202,7 +6651,7 @@ 

            فهرست

          8. -

            گزینه‌هایی که موقع تعریف ویژگی object با descriptor داریم کدوما هستن؟

            +

            گزینه‌هایی که موقع تعریف ویژگی object با descriptor داریم کدوما هستن؟

            1. value:ارزش مرتبط با ملک

            2. writable:تعیین می‌کنه که آیا مقدار مرتبط با ویژگی قابل تغییر هس یا نه

            3. @@ -6214,7 +6663,7 @@

              فهرست

            4. -

              چطوری کلاس‌ها رو extend می‌کنی؟

              +

              چطوری کلاس‌ها رو extend می‌کنی؟

              کلمه کلیدی "extends" در اعلان‌ها/عبارات کلاس برای ایجاد کلاسی که فرزند کلاس دیگه ایه استفاده می‌شه. می‌شه از اون برای زیر کلاس بندی کلاس‌های سفارشی و همچنین اشیاء داخلی استفاده کرد. بریم یه مثال در موردش ببینیم،

              class ChildClass extends ParentClass { ... }
              @@ -6239,7 +6688,7 @@ 

              فهرست

            5. -

              چطوری آدرس صفحه رو بدون رفرش صفحه عوض کنیم؟

              +

              چطوری آدرس صفحه رو بدون رفرش صفحه عوض کنیم؟

              ویژگی «window.location.url» برای تغییر url مفید خواهد بود اما صفحه رو دوباره بارگیری می‌کنه. HTML5 متدهای «history.pushState» و «history.replaceState» رو معرفی کرد که به شما اجازه میده به ترتیب ورودی‌های تاریخ رو اضافه و تغییر بدین. برای مثال، می‌تونین از pushState مانند زیر استفاده کنین.

              window.history.pushState('page2', 'Title', '/page2.html');
              @@ -6247,7 +6696,7 @@ 

              فهرست

            6. -

              چطوری بررسی می‌کنی که یه آرایه یه مقدار مشخص رو داره یا نه؟

              +

              چطوری بررسی می‌کنی که یه آرایه یه مقدار مشخص رو داره یا نه؟

              متد «Array#includes» برای تعیین اینکه آیا یه آرایه دارای مقدار خاصی در میان ورودی‌های خود با برگردوندن true یا false هس یا نه استفاده می‌شه. بیاین مثالی برای یافتن یه عنصر (عددی و رشته‌ای) تو یه آرایه ببینیم.

              var numericArray = [1, 2, 3, 4];
              @@ -6259,7 +6708,7 @@ 

              فهرست

            7. -

              چطوری آرایه‌های scalar رو با هم مقایسه می‌کنی؟

              +

              چطوری آرایه‌های scalar رو با هم مقایسه می‌کنی؟

              می‌تونین از طول و هر روش آرایه برای مقایسه دو آرایه اسکالر (مقایسه مستقیم با استفاده از ===) استفاده کنین. ترکیب این عبارات میتونه نتیجه مورد انتظار رو به دست بده،

              const arrayFirst = [1,2,3,4,5];
              @@ -6275,7 +6724,7 @@ 

              فهرست

            8. -

              چطوری می‌شه پارامترهای صفحه رو از متد GET گرفت؟

              +

              چطوری می‌شه پارامترهای صفحه رو از متد GET گرفت؟

              شیء «URL» رشته url رو می‌پذیرد و از ویژگی «searchParams» این شی می‌توان برای دسترسی به پارامترهای get استفاده کرد. به یاد داشته باشیم که ممکنه برای دسترسی به URL در مرورگرهای قدیمی (از جمله IE) نیاز به استفاده از polyfill یا «window.location» داشته باشیم.

              let urlString = "http://www.some-domain.com/about.html?x=1&y=2&z=3"; //window.location.href
              @@ -6286,7 +6735,7 @@ 

              فهرست

            9. -

              چطوری اعداد رو می‌شه سه رقم سه رقم جدا کرد؟

              +

              چطوری اعداد رو می‌شه سه رقم سه رقم جدا کرد؟

              می‌تونین از متد «Number.prototype.toLocaleString» استفاده کنین که رشته‌ای رو با نمایشی حساس به زبان مانند جداکننده هزار، ارز و غیره از این عدد برمی‌گردونه.

              function convertToThousandFormat(x){
              @@ -6298,7 +6747,7 @@ 

              فهرست

            10. -

              تفاوت‌ بین java و javascript چیه؟

              +

              تفاوت‌ بین java و javascript چیه؟

              هر دو زبان برنامه نویسی کاملاً نامرتبط هستن و هیچ ارتباطی بین اونا وجود نداره. جاوا بصورت ایستا تایپ می‌شه، کامپایل می‌شه، روی ماشین مجازی خود اجرا می‌شه. در حالی که جاواسکریپت به صورت پویا تایپ می‌شه، تفسیر می‌شه و در محیط‌های مرورگر و nodejs اجرا می‌شه. بیاین تفاوت‌های عمده رو در قالب جدولی ببینیم،

  41. @@ -6339,7 +6788,7 @@

    فهرست

  42. -

    آیا جاواسکریپت namespace رو پشتیبانی می‌کنه؟

    +

    آیا جاواسکریپت namespace رو پشتیبانی می‌کنه؟

    جاواسکریپت به طور پیش فرض از فضای نام پشتیبانی نمی‌کنه. بنابراین اگه هر عنصری (تابع، روش، شی، متغیر) ایجاد کنین گلوبال می‌شه و فضای نام گلوبال رو آلوده می‌کنه. بیاین مثالی از تعریف دو تابع بدون فضای نام بزنیم،

    function func1() {
    @@ -6355,7 +6804,7 @@ 

    فهرست

  43. -

    چطوری namespace تعریف می‌کنی؟

    +

    چطوری namespace تعریف می‌کنی؟

    حتی اگه جاواسکریپت فاقد فضاهای نام باشه، می‌تونیم از Objects، IIFE برای ایجاد فضاهای نام استفاده کنیم.

    1. Using Object Literal Notation: بیاین متغیرها و توابع رو درون یه Object literal بپیچیم که به عنوان فضای نام عمل می‌کنه. پس از اون می‌تونین با استفاده از نماد شیء به اونا دسترسی داشته باشیم

    2. @@ -6413,7 +6862,7 @@

      فهرست

    3. -

      چطوری می‌تونیم تکه کد جاواسکریپت داخل یه iframe رو از صفحه والد صدا بزنیم؟

      +

      چطوری می‌تونیم تکه کد جاواسکریپت داخل یه iframe رو از صفحه والد صدا بزنیم؟

      در ابتدا باید iFrame با استفاده از «document.getElementBy» یا «window.frames» قابل دسترسی باشه. پس از اون ویژگی «contentWindow» iFrame به targetFunction دسترسی میده

      document.getElementById('targetFrame').contentWindow.targetFunction();
      @@ -6423,7 +6872,7 @@ 

      فهرست

    4. -

      چطوری می‌شه اختلاف timezone رو از آبجکت date بگیریم؟

      +

      چطوری می‌شه اختلاف timezone رو از آبجکت date بگیریم؟

      می‌تونین از روش «getTimezoneOffset» شی تاریخ استفاده کنین. این روش اختلاف منطقه زمانی رو بر حسب دقیقه از محلی فعلی (تنظیمات سیستم میزبان) به UTC برمی‌گردونه

      var offset = new Date().getTimezoneOffset();
      @@ -6432,7 +6881,7 @@ 

      فهرست

    5. -

      چطوری فایل‌های CSS و JS رو به شکل داینامیک بارگذاری کنیم؟

      +

      چطوری فایل‌های CSS و JS رو به شکل داینامیک بارگذاری کنیم؟

      شما می‌تونین هر دو عنصر پیوند و اسکریپت رو در DOM ایجاد کنین و اونا رو به عنوان فرزند به تگ head اضافه کنین. بیاین یه تابع برای اضافه کردن منابع اسکریپت و سبک مثل زیر ایجاد کنیم.

      function loadAssets(filename, filetype) {
      @@ -6453,7 +6902,7 @@ 

      فهرست

    6. -

      روش‌های مختلف برای پیدا کردن elementها توی DOM کدوما هستن؟

      +

      روش‌های مختلف برای پیدا کردن elementها توی DOM کدوما هستن؟

      اگه می‌خواین به هر عنصری در صفحه HTML دسترسی داشته باشیم، باید با دسترسی به شی سند شروع کنین. بعداً می‌تونین از یکی از روش‌های زیر برای یافتن عنصر HTML استفاده کنین.

      1. document.getElementById(id): یه عنصر رو با Id پیدا می‌کنه

      2. @@ -6463,7 +6912,7 @@

        فهرست

      3. -

        jQuery چیه؟

        +

        jQuery چیه؟

        jQuery یه کتابخانه جاواسکریپت متقابل مرورگر محبوبه که با به حداقل رسوندن اختلاف بین مرورگرها، پیمایش مدل شی سند (DOM)، مدیریت رویداد، انیمیشن‌ها و تعاملات AJAX رو فراهم می‌کنه. با فلسفه اش «کمتر بنویس، بیشتر انجام بده» شهرت زیادی داره. برای مثال، می‌تونین پیام خوش آمدگویی رو در بارگذاری صفحه با استفاده از jQuery به صورت زیر نمایش بدین.

        $(document).ready(function(){ // It selects the document and apply the function on page load
        @@ -6474,13 +6923,13 @@ 

        فهرست

      4. -

        موتور V8 جاواسکریپت چیه؟

        +

        موتور V8 جاواسکریپت چیه؟

        V8 یه موتور جاواسکریپت با کارایی بالا منبع بازه که توسط مرورگر Google Chrome استفاده می‌شه و به زبان C++ نوشته شده است. همچنین در پروژه node.js استفاده می‌شه. ECMAScript و WebAssembly رو پیاده‌سازی می‌کنه و روی ویندوز 7 یا بالاتر، macOS 10.12+ و سیستم‌های لینوکس که از پردازنده‌های x64، IA-32، ARM یا MIPS استفاده میکنن اجرا می‌شه.
        نکته: میتونه به صورت مستقل اجرا شه یا میتونه در هر برنامه C++ تعبیه شه.

        فهرست

      5. -

        چرا ما جاواسکریپت رو به عنوان یه زبان داینامیک می‌شناسیم؟

        +

        چرا ما جاواسکریپت رو به عنوان یه زبان داینامیک می‌شناسیم؟

        جاواسکریپت یه زبان ساده تایپ شده یا یه زبان پویاعه چون متغیرها در جاواسکریپت مستقیماً با هیچ نوع مقدار خاصی مرتبط نیستن و هر متغیری رو می‌شه با مقادیری از همه نوع تخصیص/تخصیص مجدد داد.

        let age = 50;    // age is a number now
        @@ -6490,7 +6939,7 @@ 

        فهرست

      6. -

        عملگر void چیکار می‌کنه؟

        +

        عملگر void چیکار می‌کنه؟

        عملگر ‍void عبارت داده شده رو ارزیابی می‌کنه و بعد تعریف نشده (یعنی بدون بازگشت مقدار) رو برمی‌گردونه. بریم یه مثال در موردش ببینیم،

        void (expression)
        @@ -6504,7 +6953,7 @@ 

        فهرست

      7. -

        چطوری می‌شه نمایشگر موس صفحه رو به درحال لود تغییر داد؟

        +

        چطوری می‌شه نمایشگر موس صفحه رو به درحال لود تغییر داد؟

        مکان نما رو می‌شه برای انتظار در جاواسکریپت با استفاده از ویژگی cursorتنظیم کرد. بیاین این رفتار رو در بارگذاری صفحه با استفاده از تابع زیر انجام بدیم.

        function myFunction() {
        @@ -6518,7 +6967,7 @@ 

        فهرست

      8. -

        چطوری می‌شه یه حلقه بی‌نهایت درست کرد؟

        +

        چطوری می‌شه یه حلقه بی‌نهایت درست کرد؟

        شما می‌تونین حلقه‌های بی نهایت با استفاده از حلقه‌های for و while بدون استفاده از هیچ عبارتی ایجاد کنین. ساختار یا نحو حلقه for از نظر ESLint و ابزارهای بهینه ساز کد، رویکرد بهتریه.

        for (;;) {}
        @@ -6529,7 +6978,7 @@ 

        فهرست

      9. -

        چرا باید در استفاده از عبارت with تجدیدنظر کرد؟

        +

        چرا باید در استفاده از عبارت with تجدیدنظر کرد؟

        دستور با جاواسکریپت در نظر گرفته شده بود که مختصری برای نوشتن دسترسی‌های تکرارشونده به اشیا ارائه بده. بنابراین میتونه با کاهش نیاز به تکرار یه مرجع طولانی بدون جریمه عملکرد، به کاهش اندازه فایل کمک کنه. بیاین مثالی بزنیم که تو اون برای جلوگیری از افزونگی موقع چندین بار دسترسی به یه شی استفاده می‌شه.

        a.b.c.greeting   = 'welcome';
        @@ -6546,7 +6995,7 @@ 

        فهرست

      10. -

        خروجی این حلقه‌ها چی می‌شه؟

        +

        خروجی این حلقه‌ها چی می‌شه؟

        for (var i = 0; i < 4; i++) { // global scope
           setTimeout(() => console.log(i));
        @@ -6561,7 +7010,7 @@ 

        فهرست

      11. -

        می‌تونی یه سری از ویژگی‌های ES6 رو اسم ببری؟

        +

        می‌تونی یه سری از ویژگی‌های ES6 رو اسم ببری؟

        در زیر لیستی از بعضی از ویژگی‌های جدید ES6 اومده.

        1. پشتیبانی از ثابت‌ها یا متغیرهای تغییرناپذیر

        2. @@ -6580,12 +7029,12 @@

          فهرست

        3. -

          ES6 چیه؟

          +

          ES6 چیه؟

          ES6 ششمین نسخه از زبان جاواسکریپت‌ـه و در ژوئن 2015 منتشر شد. در ابتدا با نام ECMAScript 6 (ES6) شناخته شد و بعداً به ECMAScript 2015 تغییر نام داد. تقریباً همه مرورگرهای مدرن از ES6 پشتیبانی می‌کنن اما برای مرورگرهای قدیمی ترانسپایلرهای زیادی وجود داره.، مانند Babel.js و غیره

          فهرست

        4. -

          آیا می‌تونیم متغیرهای تعریف شده با let و const رو مجددا declare کنیم؟

          +

          آیا می‌تونیم متغیرهای تعریف شده با let و const رو مجددا declare کنیم؟

          نه، شما نمی‌تونین متغیرهای let و const رو مجدداً اعلام کنین. اگه این کار رو انجام بدین، خطای زیر رو نشون میده

          Uncaught SyntaxError: Identifier 'someVariable' has already been declared
          @@ -6616,7 +7065,7 @@ 

          فهرست

        5. -

          آیا استفاده از const برای تعریف متغیر اونا رو immutable می‌کنه؟

          +

          آیا استفاده از const برای تعریف متغیر اونا رو immutable می‌کنه؟

          خیر، متغیر const مقدار رو تغییرناپذیر نمی‌کنه. اما تخصیص‌های بعدی رو مجاز نمی‌داند (یعنی می‌تونین با تخصیص اعلام کنین اما بعداً نمی‌تونین مقدار دیگری رو اختصاص بدین)

          const userList = [];
          @@ -6626,7 +7075,7 @@ 

          فهرست

        6. -

          parameterهای پیش‌فرض چی هستن؟

          +

          parameterهای پیش‌فرض چی هستن؟

          در E5، برای مدیریت مقادیر پیش‌فرض پارامترهای تابع، باید به عملگرهای OR منطقی وابسته باشیم. در حالی که در ES6، ویژگی پارامترهای تابع پیش‌فرض اجازه میده تا پارامترها با مقادیر پیش‌فرض مقداردهی اولیه بشن، اگه مقداری یا تعریف‌نشده ارسال نشه. بیاین رفتار رو با یه مثال مقایسه کنیم،

          //ES5
          @@ -6650,7 +7099,7 @@ 

          فهرست

        7. -

          template-literalها چی هستن؟

          +

          template-literalها چی هستن؟

          حروف الفبای الگو یا رشته‌های الگو، حروف الفبای رشته‌ای هستن که امکان عبارات تعبیه‌شده رو میدن. اینا به جای گیومه‌های دوتایی یا تکی با کاراکتر بک تیک (`) محصور میشن
          در E6، این ویژگی استفاده از عبارات پویا رو به شرح زیر امکان پذیر می‌کنه.

          @@ -6664,7 +7113,7 @@

          فهرست

        8. -

          چطوری رشته‌های چند خطی رو توی template-literalها می‌نویسیم؟

          +

          چطوری رشته‌های چند خطی رو توی template-literalها می‌نویسیم؟

          در ES5، برای بدست آوردن رشته‌های چند خطی، باید از کاراکترهای فرار از خط جدید ('\n') و نمادهای الحاقی (+) استفاده کنین.

          console.log('This is string sentence 1\n' +
          @@ -6678,7 +7127,7 @@ 

          فهرست

        9. -

          template-literal‌های تودرتو چی هستن؟

          +

          template-literal‌های تودرتو چی هستن؟

          الگوی تودرتو یه ویژگیه که در نحو تحت اللفظی الگو پشتیبانی می‌شه تا امکان بکتیک‌های درونی تو یه مکان‌نمای ${ } رو در قالب فراهم کنه. برای مثال، الگوی تودرتو زیر برای نمایش نمادها بر اساس مجوزهای کاربر استفاده می‌شه، در حالی که الگوی بیرونی نوع پلت فرم رو بررسی می‌کنه.

          const iconStyles = `icon ${ isMobilePlatform() ? '' :
          @@ -6693,7 +7142,7 @@ 

          فهرست

        10. -

          tagged-templateها چی هستن؟

          +

          tagged-templateها چی هستن؟

          الگوهای برچسب‌گذاری شده شکل پیشرفته‌ای از قالب‌ها هستن که تو اون برچسب‌ها به شما اجازه میدن تا کلمات قالب رو با یه تابع تجزیه کنین. تابع تگ اولین پارامتر رو به عنوان آرایه ای از رشته‌ها و پارامترهای باقی مانده رو به عنوان عبارات می پذیرد. این تابع همچنین میتونه رشته‌های دستکاری شده رو بر اساس پارامترها برگرداند. بیاین نحوه استفاده از رفتار الگوی برچسب گذاری شده مجموعه مهارت‌های حرفه ای فناوری اطلاعات تو یه سازمان رو ببینیم.

          var user1 = 'John';
          @@ -6730,7 +7179,7 @@ 

          فهرست

        11. -

          رشته‌های خام چی هستن؟

          +

          رشته‌های خام چی هستن؟

          ES6 با استفاده از روش «String.raw» ویژگی رشته‌های خام رو ارائه می‌کنه که برای دریافت شکل رشته خام رشته‌های الگو استفاده می‌شه. این ویژگی به شما این امکان رو میده تا به رشته‌های خام همونطور که وارد شده‌اند، بدون پردازش دنباله‌های فرار دسترسی داشته باشیم. بریم یه مثال در موردش ببینیم،

          var calculationString = String.raw `The sum of numbers is \n${1+2+3+4}!`;
          @@ -6752,7 +7201,7 @@ 

          فهرست

        12. -

          assign کردن با destructuring چیه و چطوری انجام می‌شه؟

          +

          assign کردن با destructuring چیه و چطوری انجام می‌شه؟

          تخصیص destructuring یه عبارت جاواسکریپت‌ـه که امکان باز کردن مقادیر آرایه‌ها یا خصوصیات از اشیاء به متغیرهای مجزا رو فراهم می‌کنه.
          بیاین مقادیر ماه رو از یه آرایه با استفاده از تخصیص ساختارشکن به دست آوریم

          @@ -6772,7 +7221,7 @@

          فهرست

        13. -

          موقع assign کردن با destructuring چطوری می‌شه مقدار اولیه تعریف کرد؟

          +

          موقع assign کردن با destructuring چطوری می‌شه مقدار اولیه تعریف کرد؟

          زمانی که مقدار باز شده از آرایه یا شیء در طول تخصیص ساختارشکن تعریف نشده باشه، می‌شه به یه متغیر یه مقدار پیش فرض اختصاص داد. این کمک می‌کنه تا از تنظیم مقادیر پیش فرض جداگانه برای هر انتساب جلوگیری کنین. بیاین برای هر دو آرایه و موارد استفاده از شی مثالی بزنیم،

          Arrays destructuring:

          @@ -6794,7 +7243,7 @@

          فهرست

        14. -

          چطوری می‌تونیم مقدار یه آرایه رو با استفاده از destructuring-assignment تعویض کنیم؟

          +

          چطوری می‌تونیم مقدار یه آرایه رو با استفاده از destructuring-assignment تعویض کنیم؟

          اگه از destructuring-assignment استفاده نمی‌کنین تعویض دو مقدار به یه متغیر موقت نیاز داره. در حالی که با استفاده از یه ویژگی ساختارشکن، دو مقدار متغیر رو می‌شه تو یه عبارت ساختار شکن جایگزین کرد. بیاین دو متغیر عددی رو در انتساب ساختارزدایی آرایه با هم عوض کنیم،

          var x = 10, y = 20;
          @@ -6806,7 +7255,7 @@ 

          فهرست

        15. -

          Enhanced-object-literalها چی هستن؟

          +

          Enhanced-object-literalها چی هستن؟

          Enhanced-object-literal ایجاد سریع اجسام با ویژگی‌های درون براکت رو آسان می‌کنه. برای مثال، نحو کوتاه‌تری رو برای تعریف ویژگی شی مشترک به شرح زیر ارائه می‌کنه.

          //ES6
          @@ -6821,7 +7270,7 @@ 

          فهرست

        16. -

          importهای داینامیک چی هستن؟

          +

          importهای داینامیک چی هستن؟

          واردات پویا با استفاده از نحو تابع «import» به ما اجازه میده تا ماژول‌ها رو در صورت تقاضا با استفاده از دستورات یا دستور async/await بارگذاری کنیم. در حال حاضر این ویژگی در [پیشنهاد مرحله4] (https://github.com/tc39/proposal-dynamic-import) هستش. مزیت اصلی واردات پویا کاهش اندازه بسته‌های ما، پاسخ حجم/بار بار درخواست‌های ما و بهبود کلی در تجربه کاربر است.

          import('./Module').then(Module => Module.method());
          @@ -6829,7 +7278,7 @@ 

          فهرست

        17. -

          کاربرد importهای داینامیک چیه؟

          +

          کاربرد importهای داینامیک چیه؟

          در زیر بعضی از موارد استفاده از واردات پویا نسبت به واردات استاتیک آورده شده است.

          1. یه ماژول رو به صورت درخواستی یا مشروط وارد کنین. برای مثال، اگه می‌خواین یه polyfill رو در مرورگر قدیمی بارگذاری کنین

          2. @@ -6852,7 +7301,7 @@

            فهرست

          3. -

            آرایه‌های نوع‌دار(typed-arrays) چیه؟

            +

            آرایه‌های نوع‌دار(typed-arrays) چیه؟

            آرایه‌های تایپ شده آبجکت‌هایی آرایه مانند از ECMAScript 6 API برای مدیریت داده‌های باینری هستن. جاواسکریپت 8 نوع آرایه تایپ شده رو ارائه میده،

            1. Int8Array: آرایه ای از اعداد صحیح امضا شده 8 بیتی

            2. @@ -6874,7 +7323,7 @@

              فهرست

            3. -

              مزایای لودر ماژول‌ها چیه؟

              +

              مزایای لودر ماژول‌ها چیه؟

              ماژول لودر ویژگی‌های زیر رو ارائه میده

              1. Dynamic loading

              2. @@ -6886,7 +7335,7 @@

                فهرست

              3. -

                collation چیه؟

                +

                collation چیه؟

                Collation برای مرتب سازی مجموعه ای از رشته‌ها و جستجو در مجموعه ای از رشته‌ها استفاده می‌شه. این پارامتر توسط محلی و از Unicode آگاه است. بیاین ویژگی‌های مقایسه و مرتب سازی رو در نظر بگیریم،

                1. Comparison:

                2. @@ -6911,7 +7360,7 @@

                  فهرست

                3. -

                  عبارت for...of چیه؟

                  +

                  عبارت for...of چیه؟

                  دستور for...of یه حلقه تکرار بر روی اشیاء یا عناصر قابل تکرار مثل رشته داخلی، آرایه، اشیاء آرایه مانند (مثل آرگومان‌ها یا NodeList)، TypedArray، Map، Set و تکرارهای تعریف شده توسط کاربر ایجاد می‌کنه.

                  let arrayIterable = [10, 20, 30, 40, 50];
                  @@ -6924,7 +7373,7 @@ 

                  فهرست

                4. -

                  خروجی عملگر spread روی آرایه زیر چیه؟

                  +

                  خروجی عملگر spread روی آرایه زیر چیه؟

                  [...'John Resig']
                   
                  @@ -6933,12 +7382,12 @@

                  فهرست

                5. -

                  آیا PostMessage امنه؟

                  +

                  آیا PostMessage امنه؟

                  بله، تا زمانی که برنامه‌نویس/توسعه‌دهنده مراقب منشأ و منبع پیام دریافتی باشه، postMessages رو می‌شه بسیار امن در نظر گرفت. اما اگه بخواین پیامی رو بدون تأیید منبع آن ارسال یا دریافت کنین حملات اسکریپت بین سایتی ایجاد می‌شه.

                  فهرست

                6. -

                  مشکلات استفاده از postmessage با origin روی wildcard چیه؟

                  +

                  مشکلات استفاده از postmessage با origin روی wildcard چیه؟

                  آرگومان دوم متد postMessage مشخص می‌کنه که کدوم مبدا مجاز به دریافت پیامه. اگه از علامت "*" به عنوان آرگومان استفاده کنین هر منبعی مجاز به دریافت پیامه. در این حالت، هیچ راهی برای پنجره فرستنده وجود نداره که بفهمه پنجره هدف در موقع ارسال پیام در مبدأ هدف قرار داره یا نه. اگه پنجره هدف به مبدأ دیگری هدایت شه، مبدا دیگر داده‌ها رو دریافت می‌کنه. از این رو، این ممکنه منجر به آسیب پذیری‌های XSS شه.

                  targetWindow.postMessage(message, '*');
                  @@ -6946,7 +7395,7 @@ 

                  فهرست

                7. -

                  چطوری از دریافت postMessageهای ناخواسته و ناامن از طرف هکرها جلوگیری کنیم؟

                  +

                  چطوری از دریافت postMessageهای ناخواسته و ناامن از طرف هکرها جلوگیری کنیم؟

                  از اونجایی که شنونده به هر پیامی گوش میده، مهاجم میتونه برنامه رو با ارسال پیامی از مبدأ مهاجم فریب بده که این تصور رو ایجاد می‌کنه که گیرنده پیام رو از پنجره فرستنده واقعی دریافت کرده. شما می‌تونین با اعتبارسنجی مبدا پیام در انتهای گیرنده با استفاده از ویژگی "message.origin" از این مشکل جلوگیری کنین. برای مثال، اجازه بدین مبدا فرستنده http://www.some-sender.com در سمت گیرنده [www.some-receiver.com] (www.some) رو بررسی کنیم -receiver.com)،

                  //Listener on http://www.some-receiver.com/
                  @@ -6959,33 +7408,33 @@ 

                  فهرست

                8. -

                  می‌تونیم کلا postMessageها رو غیرفعال کنیم؟

                  +

                  می‌تونیم کلا postMessageها رو غیرفعال کنیم؟

                  شما نمی‌تونین به طور کامل (یا 100٪) از postMessages استفاده نکنین. حتی اگه برنامه شما با توجه به خطرات از postMessage استفاده نمی‌کنه، بسیاری از اسکریپت‌های شخص ثالث از postMessage برای برقراری ارتباط با سرویس شخص ثالث استفاده می‌کنن. بنابراین ممکنه برنامه شما بدون اطلاع شما از postMessage استفاده کنه.

                  فهرست

                9. -

                  آیا postMessageها به صورت synchronous و همزمان کار می‌کنن؟

                  +

                  آیا postMessageها به صورت synchronous و همزمان کار می‌کنن؟

                  postMessages در مرورگر IE8 همگام هستن اما در IE9 و سایر مرورگرهای مدرن دیگر (یعنی IE9+، Firefox، Chrome، Safari) ناهمزمان هستن. به دلیل این رفتار ناهمزمان، زمانی که postMessage برگردونده می‌شه، از مکانیزم callback استفاده می‌کنیم.

                  فهرست

                10. -

                  پارادیم زبان جاواسکریپت چیه؟

                  +

                  پارادیم زبان جاواسکریپت چیه؟

                  جاواسکریپت یه زبان چند پارادایمه که از برنامه نویسی امری/روشی، برنامه نویسی شی گرا و برنامه نویسی تابعی پشتیبانی می‌کنه. جاواسکریپت از برنامه نویسی شی گرا با وراثت اولیه پشتیبانی می‌کنه.

                  فهرست

                11. -

                  تفاوت‌های بین جاواسکریپت داخلی و خارجی چیه؟

                  +

                  تفاوت‌های بین جاواسکریپت داخلی و خارجی چیه؟

                  جاواسکریپت داخلی: کد منبع درون تگ اسکریپته.
                  جاواسکریپت خارجی: کد منبع تو یه فایل خارجی (ذخیره شده با پسوند js.) ذخیره می‌شه و در تگ ارجاع می‌شه.

                  فهرست

                12. -

                  آیا جاواسکریپت سریعتر از اسکریپت‌های سمت سرور است؟

                  +

                  آیا جاواسکریپت سریعتر از اسکریپت‌های سمت سرور است؟

                  بله، جاواسکریپت سریعتر از اسکریپت سمت سروره. از اونجایی که جاواسکریپت یه اسکریپت سمت کلاینته برای محاسبات یا محاسبات خودش به کمک سرور وب نیازی نداره. بنابراین جاواسکریپت همی‌شه سریعتر از هر اسکریپت سمت سرور مانند ASP، PHP و غیره اس.

                  فهرست

                13. -

                  چطوری وضعیت چک بودن یه checkbox رو بدست بیاریم؟

                  +

                  چطوری وضعیت چک بودن یه checkbox رو بدست بیاریم؟

                  می‌تونین ویژگی‍checked رو در کادر انتخاب شده در DOM اعمال کنین. اگه مقدار "True" باشه به این معنیه که چک باکس علامت زده شده در غیر این صورت علامت اونو بردارین. برای مثال، عنصر چک باکس HTML زیر رو می‌شه با استفاده از جاواسکریپت به صورت زیر در دسترس قرار داد.

                    <input type="checkbox" name="checkboxname" value="Agree"> Agree the conditions<br>
                  @@ -6996,12 +7445,12 @@ 

                  فهرست

                14. -

                  هدف از عملگر double-tilde چیه؟

                  +

                  هدف از عملگر double-tilde چیه؟

                  عملگر دابل tilde(~~) به عنوان عملگر bitwise double NOT شناخته می‌شه. این عملگر قراره جایگزین سریع تری برای Math.floor.

                  فهرست

                15. -

                  چطوری یه کاراکتر رو به کد ASCII تبدیل کنیم؟

                  +

                  چطوری یه کاراکتر رو به کد ASCII تبدیل کنیم؟

                  برای تبدیل کاراکترهای رشته به اعداد اسکی می‌تونین از متد String.prototype.charCodeAt استفاده کنین. برای مثال، بیاین کد ASCII رو برای حرف اول رشته «ABC» پیدا کنیم،

                  "ABC".charCodeAt(0) // returns 65
                  @@ -7013,7 +7462,7 @@ 

                  فهرست

                16. -

                  ArrayBuffer چیه؟

                  +

                  ArrayBuffer چیه؟

                  یه شی ArrayBuffer برای نشون دادن یه بافر داده باینری خام عمومی با طول ثابت استفاده می‌شه. می‌تونین اونو به صورت زیر ایجاد کنین

                  let buffer = new ArrayBuffer(16); // create a buffer of length 16
                  @@ -7027,7 +7476,7 @@ 

                  فهرست

                17. -

                  خروجی کد زیر چی خواهد بود؟

                  +

                  خروجی کد زیر چی خواهد بود؟

                  console.log("Welcome to JS world"[0])
                   
                  @@ -7036,7 +7485,7 @@

                  فهرست

                18. -

                  هدف از Error-object چیه؟

                  +

                  هدف از Error-object چیه؟

                  سازنده Error یه شی خطا ایجاد می‌کنه و نمونه‌هایی از آبجکت‌های خطا موقع رخ دادن خطاهای زمان اجرا پرتاب میشن شی Error همچنین میتونه به عنوان یه شی پایه برای استثناهای تعریف شده توسط کاربر استفاده شه. برای مثال

                  new Error([message[, fileName[, lineNumber]]])
                  @@ -7053,7 +7502,7 @@ 

                  فهرست

                19. -

                  هدف از EvalError-object چیه؟

                  +

                  هدف از EvalError-object چیه؟

                  شی EvalError یه خطا در رابطه با تابع eval جهانی رو نشون میده. حتی اگه این استثنا دیگر توسط جاواسکریپت پرتاب نمی‌شه، شی EvalError برای سازگاری باقی می ماند. برای مثال

                  new EvalError([message[, fileName[, lineNumber]]])
                  @@ -7069,7 +7518,7 @@ 

                  فهرست

                20. -

                  خطاهایی که در حالت strict-mode رخ میدن ولی در غیر اون وجود ندارن کدوما هستن؟

                  +

                  خطاهایی که در حالت strict-mode رخ میدن ولی در غیر اون وجود ندارن کدوما هستن؟

                  وقتی use strict رو اعمال می‌کنین. syntax، بعضی از موارد زیر قبل از اجرای اسکریپت یه SyntaxError ایجاد می‌کنن

                  1. وقتی از دستور Octal استفاده می‌کنین

                  2. @@ -7091,12 +7540,12 @@

                    فهرست

                  3. -

                    آیا همه objectها دارای prototype هستن؟

                    +

                    آیا همه objectها دارای prototype هستن؟

                    خیر. همه objectها دارای نمونه اولیه هستن به جز object پایه که توسط کاربر ایجاد می‌شه یا آبجکت‌ای که با استفاده از کلمه کلیدی new ایجاد می‌شه.

                    فهرست

                  4. -

                    تفاوت‌های بین parameter و argument چیه؟

                    +

                    تفاوت‌های بین parameter و argument چیه؟

                    پارامتر نام متغیر تعریف یه تابعه در حالی که یه آرگومان نشون دهنده مقدار داده شده به تابع موقع کال شدنشه. بیاین این رو با یه تابع ساده توضیح بدیم

                    function myFunction(parameter1, parameter2, parameter3) {
                    @@ -7109,7 +7558,7 @@ 

                    فهرست

                  5. -

                    هدف از متد some روی آرایه‌ها چیه؟

                    +

                    هدف از متد some روی آرایه‌ها چیه؟

                    متد some برای آزمایش اینکه آیا حداقل یه عنصر در آرایه از آزمون پیاده‌سازی شده توسط تابع ارائه شده عبور می‌کنه یا نه استفاده می‌شه. متد یه مقدار بولین برمی‌گردونه. بیاین مثالی بزنیم تا هر عنصر عجیب و غریب رو آزمایش کنیم،

                    var array = [1, 2, 3, 4, 5, 6 ,7, 8, 9, 10];
                    @@ -7121,7 +7570,7 @@ 

                    فهرست

                  6. -

                    چطوری دو یا تعداد بیشتری از آرایه‌ها رو با هم ترکیب کنیم؟

                    +

                    چطوری دو یا تعداد بیشتری از آرایه‌ها رو با هم ترکیب کنیم؟

                    متد concat برای پیوستن دو یا چند آرایه با برگردوندن یه آرایه جدید حاوی تمام عناصر استفاده می‌شه.مثال:

                    array1.concat(array2, array3, ..., arrayX)
                    @@ -7136,7 +7585,7 @@ 

                    فهرست

                  7. -

                    تفاوت‌های بین Shallow و Deep کپی چیه؟

                    +

                    تفاوت‌های بین Shallow و Deep کپی چیه؟

                    کپی کم عمق:
                    کپی کم عمق یه کپی بیتی از یه شی است. یه شی جدید ایجاد می‌شه که یه کپی دقیق از مقادیر موجود در شی اصلی داره. اگه هر یه از فیلدهای شی ارجاع به آبجکت‌های دیگه باشه، فقط آدرس‌های مرجع کپی می شن یعنی فقط آدرس حافظه کپی می‌شه.

                    مثال

                    @@ -7174,7 +7623,7 @@

                    فهرست

                  8. -

                    چطوری می‌تونیم به یه تعداد مشخص از یه رشته کپی کنیم؟

                    +

                    چطوری می‌تونیم به یه تعداد مشخص از یه رشته کپی کنیم؟

                    متدrepeat برای ساخت و برگردوندن یه رشته جدید استفاده می‌شه که حاوی تعداد مشخصی از کپی‌های رشته‌ای هس که روی آن فراخوانی شده و به هم پیوسته شدن. به یاد داشته باشیم که این روش به مشخصات ECMAScript 2015 اضافه شده است.
                    بیاین یه مثال از رشته Hello رو برای تکرار آن 4 بار در نظر بگیریم.

                    @@ -7182,7 +7631,7 @@

                    چطوری همه stringهای match شده با یه regular-expression رو برگردونیم؟

                    +

                    چطوری همه stringهای match شده با یه regular-expression رو برگردونیم؟

                    متد «matchAll» می‌تواند برای برگردوندن یه تکرارکننده از تمام نتایجی که یه رشته با یه عبارت منظم مطابقت دارن، استفاده شه. برای مثال، مثال زیر آرایه ای از نتایج رشته منطبق رو در برابر یه عبارت منظم برمی‌گردونه.

                    let regexp = /Hello(\d?))/g;
                    @@ -7197,7 +7646,7 @@ 

                    فهرست

                  9. -

                    چطوری یه رشته رو از اول یا از آخر trim کنیم؟

                    +

                    چطوری یه رشته رو از اول یا از آخر trim کنیم؟

                    روش trim نمونه اولیه رشته برای برش دادن دو طرف یه رشته استفاده می‌شه. اما اگه می‌خواهید به‌خصوص در ابتدا یا انتهای رشته رو برش بدین، می‌تونین از روش‌های «trimStart/trimLeft» و «trimEnd/trimRight» استفاده کنین. بیاین نمونه ای از این روش‌ها رو در پیام تبریک ببینیم،

                    var greeting = '   Hello, Goodmorning!   ';
                    @@ -7212,7 +7661,7 @@ 

                    فهرست

                  10. -

                    خروجی کنسول زیر با عملگر unary چی می‌شه؟

                    +

                    خروجی کنسول زیر با عملگر unary چی می‌شه؟

                    بیاین دستور کنسول رو با عملگر unary همونطور که در زیر نشون داده شده است، بگیریم.

                    console.log(+ 'Hello');
                    @@ -7221,11 +7670,11 @@ 

                    فهرست

                  11. -

                    آیا جاواسکریپت از mixinها استفاده می‌کنه؟

                    +

                    آیا جاواسکریپت از mixinها استفاده می‌کنه؟

                    فهرست

                  12. -

                    تابع thunk چیه و چیکار می‌کنه؟

                    +

                    تابع thunk چیه و چیکار می‌کنه؟

                    thunk فقط تابعیه که ارزیابی مقدار رو به تاخیر میندازه. هیچ آرگومانی نمی‌گیره، اما هر زمان که thunk رو فراخوانی می‌کنین مقدار رو میده. برای مثال، از اون استفاده می‌شه که الان اجرا نشه، اما زمانی در آینده اجرا می‌شه. بیاین یه مثال همزمان بگیریم،

                    const add = (x,y) => x + y;
                    @@ -7237,7 +7686,7 @@ 

                    فهرست

                  13. -

                    thunkهای asynchronous چیکار می‌کنن؟

                    +

                    thunkهای asynchronous چیکار می‌کنن؟

                    Thunk‌های ناهمزمان برای ایجاد درخواست‌های شبکه مفید هستن. بیاین نمونه ای از درخواست‌های شبکه رو ببینیم،

                    function fetchData(fn){
                    @@ -7258,7 +7707,7 @@ 

                    فهرست

                  14. -

                    خروجی فراخوانی‌های توابع زیر چی می‌شه؟

                    +

                    خروجی فراخوانی‌های توابع زیر چی می‌شه؟

                    Code snippet:

                    const circle = {
                    @@ -7277,7 +7726,7 @@ 

                    فهرست

                  15. -

                    چطوری همه خطوط جدید رو از یه رشته حذف کرد؟

                    +

                    چطوری همه خطوط جدید رو از یه رشته حذف کرد؟

                    ساده ترین روش استفاده از عبارات منظم برای شناسایی و جایگزینی خطوط جدید در رشته است. در این حالت از تابع تعویض به همراه رشته برای جایگزینی استفاده می‌کنیم که در مورد ما یه رشته خالی است.

                    function remove_linebreaks( var message ) {
                    @@ -7288,12 +7737,12 @@ 

                    فهرست

                  16. -

                    تفاوت‌ بین reflow و repaint چیه؟

                    +

                    تفاوت‌ بین reflow و repaint چیه؟

                    رنگ‌آمیزی مجدد زمانی اتفاق می‌افتد که تغییراتی ایجاد می‌شه که روی دید یه عنصر تأثیر می‌گذارد، اما روی طرح آن تأثیر نمی‌گذارد. نمونه‌هایی از این موارد شامل طرح کلی، نمایان بودن یا رنگ پس زمینه است. یه reflow شامل تغییراتیه که بر طرح بندی بخشی از صفحه (یا کل صفحه) تأثیر میزاره. تغییر اندازه پنجره مرورگر، تغییر فونت، تغییر محتوا (مانند تایپ متن توسط کاربر)، استفاده از روش‌های جاواسکریپت شامل سبک‌های محاسبه‌شده، افزودن یا حذف عناصر از DOM، و تغییر کلاس‌های یه عنصر چند مورد از مواردی هستن که می‌تونن جریان مجدد رو آغاز کنن. جریان مجدد یه عنصر باعث جریان مجدد بعدی همه عناصر فرزند و اجداد و همچنین هر عنصری که به دنبال آن در DOM است می‌شه.

                    فهرست

                  17. -

                    اگه قبل از یه آرایه عملگر نفی «!» بزاریم چی می‌شه؟

                    +

                    اگه قبل از یه آرایه عملگر نفی «!» بزاریم چی می‌شه؟

                    نفی یه آرایه با کاراکتر «!»، آرایه رو به یه بولین وادار می‌کنه. از اونجایی که آرایه‌ها صدق در نظر گرفته می شن، پس نفی اون false رو برمی‌گردونه.

                    console.log(![]); // false
                    @@ -7301,7 +7750,7 @@ 

                    فهرست

                  18. -

                    اگه دو تا آرایه رو با هم جمع ببندیم چی می‌شه؟

                    +

                    اگه دو تا آرایه رو با هم جمع ببندیم چی می‌شه؟

                    اگه دو آرایه رو با هم اضافه کنین هر دو اونا رو به رشته تبدیل می‌کنه و اونا رو به هم متصل می‌کنه. برای بریم یه مثال در موردش ببینیم.

                    console.log(['a'] + ['b']);  // "ab"
                    @@ -7311,7 +7760,7 @@ 

                    فهرست

                  19. -

                    اگه عملگر جمع «+» روی قبل از مقادیر falsy قرار بدیم چی می‌شه؟

                    +

                    اگه عملگر جمع «+» روی قبل از مقادیر falsy قرار بدیم چی می‌شه؟

                    اگه عملگر additive(+) رو روی مقادیر نادرست (null، undefined، NaN، false، "") قرار بدین، مقدار falsy به مقدار عددی صفر تبدیل می‌شه. بیاین اونا رو در کنسول مرورگر به صورت زیر نمایش بدیم،

                    console.log(+null); // 0
                    @@ -7323,7 +7772,7 @@ 

                    فهرست

                  20. -

                    چطوری با استفاده از آرایه‌ها و عملگرهای منطقی می‌تونیم رشته self رو تولید کنیم؟

                    +

                    چطوری با استفاده از آرایه‌ها و عملگرهای منطقی می‌تونیم رشته self رو تولید کنیم؟

                    رشته self رو می‌شه با ترکیب کاراکترهای []()!+ تشکیل داد. برای رسیدن به این الگو باید قراردادهای زیر رو به خاطر بسپارید.

                    1. از اونجایی که آرایه‌ها مقادیر true هستن، با نفی آرایه‌ها false تولید می‌شه: ![] === false

                    2. @@ -7352,7 +7801,7 @@

                      فهرست

                    3. -

                      چطوری می‌تونیم مقادیر falsy رو از آرایه حذف کنیم؟

                      +

                      چطوری می‌تونیم مقادیر falsy رو از آرایه حذف کنیم؟

                      شما می‌تونین با وارد کردن Boolean به عنوان پارامتر، روش فیلتر رو روی آرایه اعمال کنین. به این ترتیب تمام مقادیر نادرست (0، تعریف نشده، null، false و "") از آرایه حذف می‌شه.

                      const myArray = [false, null, 1,5, undefined]
                      @@ -7361,7 +7810,7 @@ 

                      فهرست

                    4. -

                      چطوری مقادیر تکراری رو از یه آرایه حذف کنیم؟

                      +

                      چطوری مقادیر تکراری رو از یه آرایه حذف کنیم؟

                      شما می‌تونین مقادیر منحصر به فرد یه آرایه رو با ترکیب دستور "Set" و rest expression/spread(...) دریافت کنین.

                      console.log([...new Set([1, 2, 4, 4, 3])]); // [1, 2, 4, 3]
                      @@ -7369,7 +7818,7 @@ 

                      فهرست

                    5. -

                      aliaseهای همزمان با destructuring چطوری کار می‌کنن؟

                      +

                      aliaseهای همزمان با destructuring چطوری کار می‌کنن؟

                      گاهی اوقات شما دوست دارید یه متغیر تخریب شده با نامی متفاوت از نام ویژگی داشته باشیم. در این صورت، از یه «: newName» برای تعیین نام برای متغیر استفاده خواهید کرد. این فرآیند نام مستعار تخریب ساختاری نامیده می‌شه.

                      const obj = { x: 1 };
                      @@ -7379,7 +7828,7 @@ 

                      فهرست

                    6. -

                      چطوری آیتم‌های یه آرایه رو بدون استفاده از متد map پیمایش کنیم؟

                      +

                      چطوری آیتم‌های یه آرایه رو بدون استفاده از متد map پیمایش کنیم؟

                      می‌تونین مقادیر آرایه‌ها رو بدون استفاده از روش «نقشه» تنها با استفاده از روش «از» آرایه ترسیم کنین. بیاین نام شهرها رو از آرایه کشورها ترسیم کنیم،

                      const countries = [
                      @@ -7397,7 +7846,7 @@ 

                      فهرست

                    7. -

                      چطوری یه آرایه رو خالی کنیم؟

                      +

                      چطوری یه آرایه رو خالی کنیم؟

                      با صفر کردن طول آرایه می‌تونین به سرعت یه آرایه رو خالی کنین.

                      let cities = ['Singapore', 'Delhi', 'London'];
                      @@ -7406,7 +7855,7 @@ 

                      فهرست

                    8. -

                      چطوری اعداد رو با تعداد رقم اعشار مشخص رند می‌کنی؟

                      +

                      چطوری اعداد رو با تعداد رقم اعشار مشخص رند می‌کنی؟

                      می‌تونین با استفاده از روش «toFixed» از جاواسکریپت، اعداد رو به تعداد معینی از اعشار گرد کنین.

                      let pie = 3.141592653;
                      @@ -7415,7 +7864,7 @@ 

                      فهرست

                    9. -

                      ساده‌ترین روش برای تبدیل آرایه به object چیه؟

                      +

                      ساده‌ترین روش برای تبدیل آرایه به object چیه؟

                      شما می‌تونین با استفاده از عملگر spread(...) یه آرایه رو به یه شی با همون داده تبدیل کنین.

                      var fruits = ["banana", "apple", "orange", "watermelon"];
                      @@ -7425,7 +7874,7 @@ 

                      فهرست

                    10. -

                      چطوری یه آرایه با یه سری داده درست کنیم؟

                      +

                      چطوری یه آرایه با یه سری داده درست کنیم؟

                      می‌تونین با استفاده از روش «fill» یه آرایه با مقداری داده یا یه آرایه با همون مقادیر ایجاد کنین.

                      var newArray = new Array(5).fill("0");
                      @@ -7434,7 +7883,7 @@ 

                      فهرست

                    11. -

                      متغیرهای موجود روی آبجکت console کدوما هستن؟

                      +

                      متغیرهای موجود روی آبجکت console کدوما هستن؟

                      1. %o - یه شی رو می‌گیرد،

                      2. %s - یه رشته می‌گیره،

                      3. @@ -7448,7 +7897,7 @@

                        فهرست

                      4. -

                        می‌شه پیام‌های کنسول رو استایل‌دهی کرد؟

                        +

                        می‌شه پیام‌های کنسول رو استایل‌دهی کرد؟

                        بله، می‌تونین سبک‌های CSS رو برای پیام‌های کنسول مشابه متن html در صفحه وب اعمال کنین.

                        console.log('%c The text has blue color, with large font and red background', 'color: blue; font-size: x-large; background: red');
                        @@ -7459,7 +7908,7 @@ 

                        فهرست

                      5. -

                        هدف از متد dir روی آبجکت console چیه؟

                        +

                        هدف از متد dir روی آبجکت console چیه؟

                        «console.dir» برای نمایش یه لیست تعاملی از ویژگی‌های شی جاواسکریپت مشخص شده به عنوان JSON استفاده می‌شه.

                        const user = { "name":"John", "id": 1, "city": "Delhi"};
                        @@ -7470,7 +7919,7 @@ 

                        فهرست

                      6. -

                        آیا می‌شه المنت‌های HTML رو توی console دیباگ کرد؟

                        +

                        آیا می‌شه المنت‌های HTML رو توی console دیباگ کرد؟

                        بله، دریافت و اشکال زدایی عناصر HTML در کنسول، درست مانند بازرسی عناصر، امکان پذیر است.

                        const element = document.getElementsByTagName("body")[0];
                        @@ -7481,7 +7930,7 @@ 

                        فهرست

                      7. -

                        چطوری می‌شه داده‌ها رو به شکل جدولی توی console نمایش بدیم؟

                        +

                        چطوری می‌شه داده‌ها رو به شکل جدولی توی console نمایش بدیم؟

                        «console.table» برای نمایش داده‌ها در کنسول در قالب جدولی برای تجسم آرایه‌ها یا اشیاء پیچیده استفاده می‌شه.

                        const users = [{ "name":"John", "id": 1, "city": "Delhi"}, { "name":"Max", "id": 2, "city": "London"}, { "name":"Rod", "id": 3, "city": "Paris"} ];
                        @@ -7493,7 +7942,7 @@ 

                        فهرست

                      8. -

                        چطوری می‌شه بررسی کرد که یه پارامتر Number هست یا نه؟

                        +

                        چطوری می‌شه بررسی کرد که یه پارامتر Number هست یا نه؟

                        ترکیبی از روش‌های IsNaN و isFinite برای تأیید عدد بودن یا نبودن آرگومان استفاده می‌شه.

                        function isNumber(n){
                        @@ -7503,7 +7952,7 @@ 

                        فهرست

                      9. -

                        چطوری یه متن رو می‌تونیم به clipboard کپی کنیم؟

                        +

                        چطوری یه متن رو می‌تونیم به clipboard کپی کنیم؟

                        شما باید محتوا (با استفاده از روش .select) عنصر ورودی رو انتخاب کنین و دستور copy رو با execCommand اجرا کنین (یعنی execCommand('copy')). شما همچنین می‌تونین سایر دستورات سیستم مانند cut و paste رو اجرا کنین.

                        document.querySelector("#copy-button").onclick = function() {
                        @@ -7516,7 +7965,7 @@ 

                        فهرست

                      10. -

                        چطوری می‌شه timestamp رو بدست آورد؟

                        +

                        چطوری می‌شه timestamp رو بدست آورد؟

                        می‌تونین از «Date.getTime» برای دریافت مهر زمانی فعلی استفاده کنین. یه میانبر جایگزین برای دریافت مقدار وجود داره.

                        console.log(+new Date());
                        @@ -7525,7 +7974,7 @@ 

                        فهرست

                      11. -

                        چطوری یه آرایه چندسطحی رو تک سطحی کنیم؟

                        +

                        چطوری یه آرایه چندسطحی رو تک سطحی کنیم؟

                        مسطح کردن آرایه‌های دو بعدی با عملگر Spread بی اهمیت است.

                        const biDimensionalArr = [11, [22, 33], [44, 55], [66, 77], 88, 99];
                        @@ -7543,7 +7992,7 @@ 

                        فهرست

                      12. -

                        ساده‌ترین روش برای بررسی چندشرطی چیه؟

                        +

                        ساده‌ترین روش برای بررسی چندشرطی چیه؟

                        می‌تونین از «indexOf» برای مقایسه ورودی با چندین مقدار به جای بررسی هر مقدار به عنوان یه شرط استفاده کنین.

                        // Verbose approach
                        @@ -7558,7 +8007,7 @@ 

                        فهرست

                      13. -

                        چطوری کلیک روی دکمه برگشت مرورگر رو متوجه بشیم؟

                        +

                        چطوری کلیک روی دکمه برگشت مرورگر رو متوجه بشیم؟

                        روش «window.onbeforeunload» برای ضبط رویدادهای دکمه بازگشت مرورگر استفاده می‌شه. این برای هشدار دادن به کاربران در مورد از دست دادن داده‌های فعلی مفید است.

                         window.onbeforeunload = function() {
                        @@ -7568,7 +8017,7 @@ 

                        فهرست

                      14. -

                        چطوری می‌تونیم کلیک راست رو غیرفعال کنیم؟

                        +

                        چطوری می‌تونیم کلیک راست رو غیرفعال کنیم؟

                        کلیک راست روی صفحه رو می‌شه با برگردوندن false از ویژگی «oncontextmenu» در عنصر بدنه غیرفعال کرد.

                        <body oncontextmenu="return false;">
                        @@ -7576,7 +8025,7 @@ 

                        فهرست

                      15. -

                        object-wrapperها چی هستن؟

                        +

                        object-wrapperها چی هستن؟

                        مقادیر اولیه مانند رشته، عدد و بولین خواص و روشی ندارن، اما زمانی که می‌خواهید اقداماتی رو روی اونا انجام بدین، به طور موقت به یه شی (آبجکت Wrapper) تبدیل یا مجبور می‌شن. برای مثال، اگه متد UpperCase رو روی یه مقدار رشته اولیه اعمال کنین خطایی ایجاد نمی‌کنه، اما حروف بزرگ رشته رو برمی‌گردونه.

                        let name = "john";
                        @@ -7587,12 +8036,12 @@ 

                        فهرست

                      16. -

                        AJAX چیه؟

                        +

                        AJAX چیه؟

                        AJAX مخفف Asynchronous JavaScript و XML هس و گروهی از فناوری‌های مرتبط (HTML، CSS، JavaScript، XMLHttpRequest API و غیره) که برای نمایش داده‌ها به صورت ناهمزمان استفاده می‌شه. یعنی ما می‌تونیم داده‌ها رو به سرور ارسال کنیم و بدون بارگیری مجدد صفحه وب، داده‌ها رو از سرور دریافت کنیم.

                        فهرست

                      17. -

                        روش‌های مختلف مدیریت یه کد Asynchronous چیه؟

                        +

                        روش‌های مختلف مدیریت یه کد Asynchronous چیه؟

                        1. callback‌ها

                        2. پرامیس‌ها

                        3. @@ -7602,7 +8051,7 @@

                          فهرست

                        4. -

                          چطوری یه درخواست fetch رو کنسل کنیم؟

                          +

                          چطوری یه درخواست fetch رو کنسل کنیم؟

                          تا چند روز پیش، یکی از کاستی‌های وعده‌های بومی راه مستقیمی برای لغو درخواست fetch نیست. اما «AbortController» جدید از مشخصات js به شما امکان میده از سیگنالی برای لغو یه یا چند تماس fetch استفاده کنین.
                          جریان اصلی لغو یه درخواست fetch اینجوری می‌شه.

                            @@ -7637,7 +8086,7 @@

                            فهرست

                          1. -

                            Speech-API چیه؟

                            +

                            Speech-API چیه؟

                            API گفتار وب برای فعال کردن مرورگرهای مدرن برای شناسایی و ترکیب گفتار (یعنی داده‌های صوتی در برنامه‌های وب) استفاده می‌شه. این API توسط انجمن W3C در سال 2012 معرفی شد و دارای دو بخش اصلیه.

                            1. تشخیص گفتار (تشخیص گفتار ناهمزمان یا گفتار به متن): این امکان رو فراهم می‌کنه که زمینه صدا رو از ورودی صوتی تشخیص داده و به اون پاسخ بدین. این توسط رابط "SpeechRecognition" قابل دسترسیه.
                              @@ -7667,7 +8116,7 @@

                              فهرست

                            2. -

                              حداقل timeout توی throttling چقدره؟

                              +

                              حداقل timeout توی throttling چقدره؟

                              هم مرورگر و هم محیط‌های جاواسکریپت NodeJS با حداقل تاخیری که بیشتر از 0 میلی ثانیه اس throttles رو انجام می دهند. این بدان معناست که حتی اگه تنظیم یه تاخیر 0ms به طور آنی اتفاق نیوفته.
                              مرورگرها: حداقل 4 میلی ثانیه تاخیر دارن. این throttles زمانی اتفاق میوفته که تماس‌های متوالی به دلیل تودرتوی Callback (عمق معین) یا پس از تعداد معینی فواصل متوالی آغاز شه.
                              توجه: مرورگرهای قدیمی حداقل 10 میلی ثانیه تاخیر دارن.
                              @@ -7701,12 +8150,12 @@

                              فهرست

                            3. -

                              چطوری می‌شه یه timeout صفر توی مرورگر اجرا کرد؟

                              +

                              چطوری می‌شه یه timeout صفر توی مرورگر اجرا کرد؟

                              به دلیل حداقل تاخیر بیش از 0 میلی ثانیه، نمی‌تونین از setTimeout(fn, 0) برای اجرای فوری کد استفاده کنین. اما برای دستیابی به این رفتار می‌تونین از window.postMessage() استفاده کنین.

                              فهرست

                            4. -

                              taskها توی event-loop چی هستن؟

                              +

                              taskها توی event-loop چی هستن؟

                              وظیفه هر کد/برنامه جاواسکریپتیه که قراره توسط مکانیسم‌های استانداره اجرا شه، مثل شروع اولیه اجرای یه برنامه، اجرای یه رویداد، callback یا یه بازه زمانی یا وقفه در حال اجرا. همه این وظایف تو یه صف کار برنامه ریزی میشن
                              در زیر لیستی از موارد استفاده برای افزودن وظایف به صف کار اوردیم.

                                @@ -7717,24 +8166,24 @@

                                فهرست

                              1. -

                                microtaskها چی هستن؟

                                +

                                microtaskها چی هستن؟

                                Microtask کد جاواسکریپت‌ـه که باید بلافاصله پس از تکمیل task/Microtask در حال اجرا اجرا شه. اونا در طبیعت به نوعی مسدود کننده هستن. یعنی تا زمانی که صف microtask خالی نشه، رشته اصلی مسدود می‌شه.
                                منابع اصلی Microtaskها عبارتند از Promise.resolve، Promise.reject، MutationObservers، IntersectionObservers و غیره.

                                توجه: همه این Microtaskها در همون چرخش event-loop پردازش میشن

                                فهرست

                              2. -

                                event-loopهای مختلف کدوما هستن؟

                                +

                                event-loopهای مختلف کدوما هستن؟

                                MainAppLoop - این حلقه اصلی یه برنامه اس. به طور معمول این در پایین صفحه اصلیه. خروج معمولاً نشان دهنده تمایل به بسته شدن برنامه اس. در هر برنامه فقط یکی از این موارد می‌تونه وجود داشته باشد. ThreadLoop - این حلقه ایه که معمولاً در پایین رویه اصلی یه UI Thread یافت می‌شه.

                                فهرست

                              3. -

                                هدف از queueMicrotask چیه؟

                                +

                                هدف از queueMicrotask چیه؟

                                این به کد شما اجازه میده بدون تداخل با کد دیگه با اولویت بالاتری که در حالت تعلیقه اجرا بشه اما قبل از اینکه مرورگر کنترل روی زمینه اجرا رو دوباره به دست آورد، بسته به کاری که باید تکمیل کنین.

                                فهرست

                              4. -

                                چطوری می‌شه از کتابخونه‌های جاواسکریپت توی فایل typescript استفاده کرد؟

                                +

                                چطوری می‌شه از کتابخونه‌های جاواسکریپت توی فایل typescript استفاده کرد؟

                                مشخصه که همه‌ی کتابخونه‌ها یا چارچوب‌های جاواسکریپت دارای فایل‌های اعلان TypeScript نیستن. اما اگه هنوزم می‌خواین از کتابخانه‌ها یا فریم‌ورک‌ها در فایل‌های TypeScript بدون دریافت خطاهای کامپایل استفاده کنین تنها راه‌حل کلمه کلیدی `declare به همراه یه اعلان متغیره. برای مثال، بیاین تصور کنیم که شما یه کتابخونه‌ به نام "customLibrary" دارید که اعلان TypeScript نداره و فضای نامی به نام "customLibrary" در فضای نام گلوبال داره. می‌تونین از این کتابخانه در کد تایپ اسکریپت به صورت زیر استفاده کنین.

                                declare var customLibrary;
                                @@ -7746,7 +8195,7 @@ 

                                فهرست

                              5. -

                                تفاوت‌های بین promiseها و observableها کدوما هستن؟

                                +

                                تفاوت‌های بین promiseها و observableها کدوما هستن؟

  44. @@ -7780,34 +8229,34 @@

    فهرست

  45. -

    heap چیه؟

    +

    heap چیه؟

    Heap (یا پشته حافظه) محلیه که تو اون آبجکت‌ها در موقع تعریف متغیرها ذخیره میشن یعنی این محلیه که تمام تخصیص حافظه و عدم تخصیص تو اون انجام می‌شه. هر دو heap و call-stack دو ظرف زمان اجرا JS هستن.
    هر زمان که زمان اجرا با متغیرها و اعلان‌های تابع در کد مواجه می‌شه، اونا رو در Heap ذخیره می‌کنه.

    Screenshot

    فهرست

  46. -

    event-table چیه؟

    +

    event-table چیه؟

    Event Table یه ساختار داده‌ای‌ـه که تمام رویدادهایی رو که به صورت ناهمزمان اجرا می‌شن، مانند پس از مدتی فاصله زمانی یا پس از رفع بعضی از درخواست‌های API، ذخیره و ردیابی می‌کنه. یعنی هر زمان که یه تابع setTimeout رو فراخوانی کنین یا عملیات async رو فراخوانی کنین به جدول رویداد اضافه می‌شه.
    توابع رو به تنهایی اجرا نمی‌کنه. هدف اصلی جدول رویدادها پیگیری رویدادها و ارسال اونا به صف رویداد همونطور که در نمودار زیر نشون داده شده.

    Screenshot

    فهرست

  47. -

    صف microTask چیه؟

    +

    صف microTask چیه؟

    Microtask Queue صف جدیدیه که تو اون تمام وظایف آغاز شده توسط اشیاء promise قبل از صف برگشت پردازش میشن
    صف microtasks قبل از کارهای رندر و نقاشی بعدی پردازش می‌شه. اما اگه این ریزکارها برای مدت طولانی اجرا شن، منجر به تخریب بصری میشن.

    فهرست

  48. -

    تفاوت بین shim و polyfill چیه؟

    +

    تفاوت بین shim و polyfill چیه؟

    shim کتابخونه ایه که یه API جدید رو با استفاده از ابزارهای آن محیط به یه محیط قدیمی تر میاره. لزوماً محدود به یه برنامه وب نیست. برای مثال، es5-shim.js برای شبیه سازی ویژگی‌های ES5 در مرورگرهای قدیمی (عمدتا قبل از IE9) استفاده می‌شه.
    در حالی که polyfill یه قطعه کد (یا افزونه) اس که فناوری رو ارائه می‌کنه که شما، توسعه‌دهنده، از مرورگر انتظار دارید که به صورت بومی ارائه کنه.
    تو یه جمله ساده، A polyfill یه shim برای API مرورگره.

    فهرست

  49. -

    چطوری متوجه primitive یا غیر primitive بودن یه نوع داده میشیم؟

    +

    چطوری متوجه primitive یا غیر primitive بودن یه نوع داده میشیم؟

    در جاواسکریپت، انواع ابتدایی عبارتند از boolean، string، number، BigInt، null، Symbol و undefined. در حالی که انواع غیر ابتدایی شامل Object‌ها می‌شه. اما با تابع زیر می‌تونین به راحتی اونا رو شناسایی کنین

    var myPrimitive = 30;
    @@ -7823,7 +8272,7 @@ 

    فهرست

  50. -

    babel چیه؟

    +

    babel چیه؟

    Babel یه ترانسپایلر جاواسکریپت برای تبدیل کد ECMAScript 2015+ به یه نسخه سازگار جاواسکریپت در مرورگرها یا محیط‌های فعلی و قدیمی تر است. بعضی از ویژگی‌های اصلی در زیر ذکر شده است،

    1. تبدیل نحو

    2. @@ -7833,22 +8282,22 @@

      فهرست

    3. -

      آیا Node.js به شکل کامل تک thread کار می‌کنه؟

      +

      آیا Node.js به شکل کامل تک thread کار می‌کنه؟

      Node یه رشته است، اما بعضی از توابع موجود در کتابخانه استانداره Node.js (برای مثال، توابع ماژول fs) تک رشته‌ای نیستن. یعنی منطق اونا خارج از رشته Node.js اجرا می‌شه تا سرعت و عملکرد یه برنامه رو بهبود بخشد.

      فهرست

    4. -

      کاربردهای مرسوم observableها کدوما هستن؟

      +

      کاربردهای مرسوم observableها کدوما هستن؟

      بعضی از رایج‌ترین موارد استفاده از موارد مشاهده‌شده عبارتند از سوکت‌های وب با اعلان‌های فشار، تغییرات ورودی کاربر، فواصل تکراری و غیره.

      فهرست

    5. -

      RxJS چیه؟

      +

      RxJS چیه؟

      RxJS (افزونه‌های واکنش‌گرا برای جاواسکریپت) کتابخانه‌ای برای پیاده‌سازی برنامه‌نویسی واکنش‌گرا با استفاده از مشاهده‌پذیره که نوشتن کد ناهمزمان یا مبتنی بر تماس رو آسان‌تر می‌کنه. همچنین توابع کاربردی رو برای ایجاد و کار با مشاهده پذیرها فراهم می‌کنه.

      فهرست

    6. -

      تفاوت بین Function-constructor و function-declaration چیه؟

      +

      تفاوت بین Function-constructor و function-declaration چیه؟

      توابعی که با "سازنده تابع" ایجاد می‌شن، برای زمینه‌های ایجاد خود بسته ایجاد نمی‌کنن، اما همی‌شه در محدوده جهانی ایجاد میشن یعنی تابع فقط میتونه به متغیرهای محلی خود و متغیرهای دامنه جهانی دسترسی داشته باشه. در حالی که اعلان‌های تابع میتونن به متغیرهای تابع بیرونی (بسته شدن) هم دسترسی داشته باشن.

      بیاین این تفاوت رو با یه مثال ببینیم،

      Function Constructor:

      @@ -7874,7 +8323,7 @@

      فهرست

    7. -

      شرط Short-circuit یا اتصال کوتاه چیه؟

      +

      شرط Short-circuit یا اتصال کوتاه چیه؟

      شرایط اتصال کوتاه برای روش فشرده نوشتن دستورات if ساده در نظر گرفته شده است. بیاین سناریو رو با استفاده از یه مثال نشون بدیم. اگه می‌خواین وارد پورتالی با شرایط احراز هویت شوید، عبارت زیر خواهد بود:

      if (authenticate) {
      @@ -7888,7 +8337,7 @@ 

      فهرست

    8. -

      ساده‌ترین روش برای تغییر سایز یه آرایه چیه؟

      +

      ساده‌ترین روش برای تغییر سایز یه آرایه چیه؟

      ویژگی length یه آرایه برای تغییر اندازه یا خالی کردن سریع آرایه اس. بیاین ویژگی length رو روی آرایه اعداد اعمال کنیم تا تعداد عناصر رو از 5 به 2 تغییر بدیم.

      var array = [1, 2, 3, 4, 5];
      @@ -7908,7 +8357,7 @@ 

      فهرست

    9. -

      observable چیه؟

      +

      observable چیه؟

      Observable اساساً تابعیه که میتونه جریانی از مقادیر رو به صورت همزمان یا ناهمزمان به یه ناظر در طول زمان برگردونه. مصرف کننده میتونه با فراخوانی متد «subscribe» مقدار رو دریافت کنه.
      بیاین به یه مثال ساده از یه Observable نگاه کنیم

      @@ -7927,7 +8376,7 @@

      فهرست

    10. -

      تفاوت‌های بین توابع و کلاس‌ها چیه؟

      +

      تفاوت‌های بین توابع و کلاس‌ها چیه؟

      تفاوت اصلی بین اعلان‌های تابع و اعلان‌های کلاس "بالا بردن" هس. اعلان‌های تابع بالا می رن اما اعلان‌های کلاس نه.

      Classes:

      @@ -7945,7 +8394,7 @@

      فهرست

    11. -

      تابع async چیه؟

      +

      تابع async چیه؟

      یه تابع async تابعیه که با کلمه کلیدی async اعلام شده که با اجتناب از زنجیره پرامیس رفتار ناهمزمان و مبتنی بر قول به سبک تمیزتری نوشته شه. این توابع میتونن شامل صفر یا بیشتر عبارت await باشن.

      بیاین یه مثال تابع همگام زیر رو در نظر بگیریم،

      @@ -7960,7 +8409,7 @@

      فهرست

    12. -

      چطوری خطاهای ایجاد شده هنگام استفاده از promiseها رو کنترل کنیم؟

      +

      چطوری خطاهای ایجاد شده هنگام استفاده از promiseها رو کنترل کنیم؟

      در حین استفاده از کد ناهمزمان، promiseهای ES6 جاواسکریپت میتونن زندگی شما رو بدون داشتن هرم callbackها و مدیریت خطا در هر خط دوم بسیار آسان‌تر کنن. اما Promiseها مشکلاتی دارن و بزرگ‌ترین اونا به‌طور پیش‌فرض بلعیدن خطاهاس.

      فرض کنین انتظار دارید برای تمام موارد زیر یه خطا توی کنسول چاپ کنن.

      @@ -8032,12 +8481,12 @@

      فهرست

    13. -

      Deno چیه؟

      +

      Deno چیه؟

      Deno یه ران تایم(run-time) ساده، مدرن و ایمن برای جاواسکریپت و تایپ اسکریپته که از موتور جاواسکریپت V8 و زبان برنامه نویسی Rust استفاده می‌کنه و توسط رایان دال، خالق نود جی اس استارت توسعه‌اش زده شده.

      فهرست

    14. -

      توی جاواسکریپت چطوری یه object قابل پیمایش درست کنیم؟

      +

      توی جاواسکریپت چطوری یه object قابل پیمایش درست کنیم؟

      به طور پیش فرض، اشیاء ساده قابل تکرار نیستن. اما می‌تونین با تعریف ویژگی «Symbol.iterator» روی اون شی رو قابل تکرار کنین.

      بیاین این رو با یه مثال نشون بدیم،

      @@ -8087,7 +8536,7 @@

      فهرست

    15. -

      روش مناسب برای فراخوانی توابع بازگشتی چیه؟

      +

      روش مناسب برای فراخوانی توابع بازگشتی چیه؟

      ابتدا، قبل از صحبت در مورد "دوم خوانی مناسب" باید در مورد دم دم بدونیم. فراخوانی دنباله یه فراخوانی فرعی یا تابعیه که به عنوان آخرین عمل یه تابع فراخوانی انجام می‌شه. در حالی کهفراخوانی دنباله مناسب (PTC) تکنیکیه که تو اون برنامه یا کد فریم‌های پشته ای اضافی برای بازگشت ایجاد نمی‌کنه، زمانی که فراخوانی تابع یه فراخوانی دنباله اس.

      برای مثال، بازگشت کلاسیک یا سر تابع فاکتوریل زیر به پشته برای هر مرحله بستگی داره. هر مرحله باید تا "n * فاکتوریل(n - 1)" پردازش شه

      @@ -8113,7 +8562,7 @@

      فهرست

    16. -

      چطوری بررسی کنیم که یه آبجکت promise هست یا نه؟

      +

      چطوری بررسی کنیم که یه آبجکت promise هست یا نه؟

      اگه نمی‌دونین یه مقدار یه promise هس یا نه، مقدار رو به صورت ‍Promise.resolve(value) بپیچید که یه قول رو برمی‌گردونه.

         function isPromise(object){
      @@ -8148,7 +8597,7 @@ 

      فهرست

    17. -

      چطوری متوجه بشیم که یا تابع با تابع constructor صدا زده شده یا نه؟

      +

      چطوری متوجه بشیم که یا تابع با تابع constructor صدا زده شده یا نه؟

      می‌تونین از ویژگی شبه «new.target» برای تشخیص اینکه آیا یه تابع به عنوان سازنده (با استفاده از عملگر جدید) فراخوانی شده یا به عنوان یه فراخوانی تابع معمولی استفاده کنین.

      1. اگه سازنده یا تابعی با استفاده از عملگر جدید فراخوانی شه، new.target یه مرجع به سازنده یا تابع برمی‌گردونه.

      2. @@ -8170,7 +8619,7 @@

        فهرست

      3. -

        تفاوت‌های بین آبجکت argument و پارامتر rest چیه؟

        +

        تفاوت‌های بین آبجکت argument و پارامتر rest چیه؟

        1. آبجکت آرگومان‌ها آرایه ماننده اما آرایه نیست. در حالی که بقیه پارامترها نمونه‌های آرایه هستن.

        2. آبجکت آرگومان‌ها از روش‌هایی مانند sort، map، forEach یا pop پشتیبانی نمی‌کنه. در حالی که این روش‌ها رو می‌شه در پارامترهای استراحت استفاده کرد.

        3. @@ -8179,12 +8628,12 @@

          فهرست

        4. -

          تفاوت‌های بین عملگر spread و پارامتر rest چیه؟

          +

          تفاوت‌های بین عملگر spread و پارامتر rest چیه؟

          پارامتر Rest تمام عناصر باقی مانده رو در یه آرایه جمع آوری می‌کنه. در حالی که عملگر Spread به تکرارپذیرها (آرایه‌ها / اشیاء / رشته‌ها) اجازه میده تا به آرگومان‌ها / عناصر منفرد گسترش پیدا کنن. یعنی پارامتر Rest مخالف عملگر spread هس.

          فهرست

        5. -

          نوع‌های مختلف generatorها کدوما هستن؟

          +

          نوع‌های مختلف generatorها کدوما هستن؟

          1. Generator function declaration:

          @@ -8251,7 +8700,7 @@

          فهرست

        6. -

          iterableهای built-in کدوما هستن؟

          +

          iterableهای built-in کدوما هستن؟

          1. آرایه‌ها و TypedArrays

          2. رشته‌ها: روی هر کاراکتر یا نقاط کد یونیکد تکرار کنین

          3. @@ -8263,7 +8712,7 @@

            فهرست

          4. -

            تفاوت‌های بین حلقه for...of و for...in چیه؟

            +

            تفاوت‌های بین حلقه for...of و for...in چیه؟

            هم برای...in و هم برای...از دستورات روی ساختارهای داده js تکرار می‌شن. تنها تفاوت در مورد چیزیه که اونا تکرار میکننده:

            1. for..in روی تمام کلیدهای خصوصیت شمارش پذیر یه شی تکرار می‌شه

            2. @@ -8289,7 +8738,7 @@

              فهرست

            3. -

              چطوری propertyهای instance و غیر instanceای تعریف می‌کنی؟

              +

              چطوری propertyهای instance و غیر instanceای تعریف می‌کنی؟

              خصوصیات Instance باید در داخل متدهای کلاس تعریف بشن. برای مثال، مشخصات نام و سن سازنده داخلی هم مثل مثال پایین تعریف میشن.

              class Person {
              @@ -8307,7 +8756,7 @@ 

              فهرست

            4. -

              تفاوت‌های بین isNaN و Number.isNaN کدوما هستن؟

              +

              تفاوت‌های بین isNaN و Number.isNaN کدوما هستن؟

              1. isNaN: تابع سراسری «isNaN» آرگومان رو به عدد تبدیل می‌کنه و اگه مقدار حاصل NaN باشه، true رو برمی‌گردونه.

                diff --git a/book.md b/book.md index a1a4694d..24283967 100644 --- a/book.md +++ b/book.md @@ -5,462 +5,457 @@ date: August 30, 2020 export_on_save: html: true puppeteer: -landscape: false -printBackground: true -timeout: 3000 -width: "170mm" -height: "240mm" -margin: { top: '50px', bottom: '55px', right: '40px', left: '40px'} -displayHeaderFooter: true -headerTemplate: '
                ' -footerTemplate: '
                - - -
                ' + landscape: false + printBackground: true + timeout: 3000 + width: "170mm" + height: "240mm" + margin: { top: '50px', bottom: '55px', right: '40px', left: '40px'} + displayHeaderFooter: true + headerTemplate: '2222' + footerTemplate: '
                + + +
                ' ---
                # مجموعه سوال و جواب‌های جاواسکریپتی -> اگه خوشتون اومد به گیت‌هابمون مراجعه کنین و بهمون :star: بدین. اگه هم قصد مشارکت داشتید خیلی خوشحال می‌شیم :) +> اگه از کتاب خوشتون اومد به گیت‌هابمون مراجعه کنین و بهمون :star: بدین. اگه هم قصد مشارکت داشتید خیلی خوشحال می‌شیم :) http://github.com/mariotek ## دانلود کتاب به فرمت‌های PDF/Epub -می‌تونید از بخش ریلیزهای گیت‌هاب دانلود کنین([این لینک](https://github.com/Mariotek/advanced-javascript/releases)). +می‌تونین خیلی راحت نسخه آنلاین کتاب استفاده کنین یا اگه به فایل کتاب می‌خوایین دسترسی داشته باشین، از بخش ریلیزهای گیت‌هاب به فرمت‌های مختلف آخرین نسخه کتاب رو می‌تونین دریافت کنین. -## پیش گفتار - -پرسش و پاسخ‌های پیش رو، حاصل گردآوری سوالات پرتکراری‌ست که در جلسات مصاحبه‌ برای موقعیت‌‌های کاری مرتبط با جاواسکریپت پرسیده می‌شه. -امیدواریم که با مطالعه این سوالات توی مصاحبه‌های شغلی‌تون موفق باشین و به دانش‌تون اضافه بشه. - ---- - ### فهرست -| ردیف | سوال | -|---- | --------- -|1 | [روش‌های ایجاد objects توی جاواسکریپت چیا هستن؟](#روشهای-ایجاد-objects-توی-جاواسکریپت-چیا-هستن) | -|2 | [زنجیره prototype چیه؟](#زنجیره-prototype-چیه) | -|3 | [تفاوت‌های بین Call، Apply و Bind چیا هستن؟](#تفاوتهای-بین-Call،-Apply-و-Bind-چیا-هستن) | -|4 | [فرمت JSON چیه و عملیات‌های معمول بر روی آن چیا هستن؟](#فرمت-JSON-چیه-و-عملیاتهای-معمول-بر-روی-آن-چیا-هستن) | -|5 | [هدف از متد slice روی آرایه‌ها چیه؟](#هدف-از-متد-slice-روی-آرایهها-چیه) | -|6 | [هدف از متد splice روی آرایه‌ها چیه؟](#هدف-از-متد-splice-روی-آرایهها-چیه) | -|7 | [تفاوت متدهای slice و splice چیا هستن؟](#تفاوت-متدهای-slice-و-splice-چیا-هستن) | -|8 | [تفاوت‌های Object و Map چیا هستن؟](#تفاوتهای-Object-و-Map-چیا-هستن) | -|9 | [تفاوت‌های بین عملگرهای == و === چیا هستن؟](#تفاوتهای-بین-عملگرهای-و-چیا-هستن) | -|10 | [توابع lambda یا arrow-function چی هستن؟](#توابع-lambda-یا-arrow-function-چی-هستن) | -|11 | [یه تابع first-class چجور تابعی‌ـه؟](#یه-تابع-first-class-چجور-تابعیـه) | -|12 | [یه تابع first-order چجور تابعی‌ـه؟](#یه-تابع-first-order-چجور-تابعیـه) | -|13 | [یه تابع higher-order چجور تابعی‌ـه؟](#یه-تابع-higher-order-چجور-تابعیـه) | -|14 | [یه تابع unary چجور تابعی‌ـه؟](#یه-تابع-unary-چجور-تابعیـه) | -|15 | [currying توابع یعنی چی؟](#currying-توابع-یعنی-چی) | -|16 | [چه توابعی pure هستن؟](#چه-توابعی-pure-هستن) | -|17 | [هدف از کلمه کلیدی let چیه؟](#هدف-از-کلمه-کلیدی-let-چیه) | -|18 | [تفاوت‌های کلمات کلیدی let و var چیا هستن؟](#تفاوتهای-کلمات-کلیدی-let-و-var-چیا-هستن) | -|19 | [دلیل انتخاب کلمه کلیدی let چیه؟](#دلیل-انتخاب-کلمه-کلیدی-let-چیه) | -|20 | [چطوری می‌تونیم توی بلوک مربوط به switch بدون دریافت خطا متغیر تعریف کنیم؟](#چطوری-می‌تونیم-توی-بلوک-مربوط-به-switch-بدون-دریافت-خطا-متغیر-تعریف-کنیم) | -|21 | [Temporal-Dead-Zone چیه؟](#Temporal-Dead-Zone-چیه ) | -|22 | [IIFE(توابع بلافاصله صدا زده شده) چی هستن؟](#IIFEتوابع-بلافاصله-صدا-زده-شده-چی-هستن) | -|23 | [مزایای استفاده از moduleها چیه؟](#مزایای-استفاده-از-moduleها-چیه) | -|24 | [Memoization چیه؟](#Memoization-چیه) | -|25 | [Hoisting چیه؟](#Hoisting-چیه) | -|26 | [Classها توی ES6 چی هستن؟](#Classها-توی-ES6-چی-هستن) | -|27 | [Closureها چیا هستن؟](#Closureها-چیا-هستن) | -|28 | [Moduleها چیا هستن؟](#Moduleها-چیا-هستن) | -|29 | [چرا به moduleها نیاز داریم؟](#چرا-به-moduleها-نیاز-داریم) | -|30 | [توی جاواسکریپت scope چیه و چیکار می‌کنه؟](#توی-جاواسکریپت-scope-چیه-و-چیکار-می‌کنه) | -|31 | [service-worker چیه؟](#service-worker-چیه) | -|32 | [توی service-worker چطوری می‌شه DOM رو دستکاری کرد؟](#توی-service-worker-چطوری-می‌شه-DOM-رو-دستکاری-کرد) | -|33 | [چطوری می‌تونیم بین ریست شدن‌های service-worker داده‌های مورد نظرمون رو مجدد استفاده کنیم؟](#چطوری-می‌تونیم-بین-ریست-شدنهای-service-worker-دادههای-مورد-نظرمون-رو-مجدد-استفاده-کنیم) | -|34 | [IndexedDB چیه؟](#IndexedDB-چیه) | -|35 | [Web-storage چیه؟](#Web-storage-چیه) | -|36 | [Post-message چیه؟](#Post-message-چیه) | -|37 | [Cookie چیه؟](#Cookie-چیه) | -|38 | [چرا به cookie نیاز داریم؟](#چرا-به-cookie-نیاز-داریم) | -|39 | [گزینه‌های قابل تنظیم توی cookie چیا هستن؟](#گزینههای-قابل-تنظیم-توی-cookie-چیا-هستن) | -|40 | [چطوری می‌شه یه cookie رو حذف کرد؟](#چطوری-می‌شه-یه-cookie-رو-حذف-کرد) | -|41 | [تفاوت‌های بین cookie، local-storage و session-storage چیا هستن؟](#تفاوتهای-بین-cookie،-local-storage-و-session-storage-چیا-هستن) | -|42 | [تفاوت‌های بین localStorage و sessionStorage چیا هستن؟](#تفاوتهای-بین-localStorage-و-sessionStorage-چیا-هستن) | -|43 | [چطوری به web-storage دسترسی پیدا می‌کنی؟](#چطوری-به-web-storage-دسترسی-پیدا-می‌کنی) | -|44 | [چه متد‌هایی روی session-storage قابل استفاده هستن؟](#چه-متدهایی-روی-session-storage-قابل-استفاده-هستن) | -|45 | [رخداد storage چیه و چطوری ازش استفاده می‌کنیم؟](#رخداد-storage-چیه-و-چطوری-ازش-استفاده-می‌کنیم) | -|46 | [چرا به web-storage نیاز داریم؟](#چرا-به-web-storage-نیاز-داریم) | -|47 | [چطوری می‌تونیم پشتیبانی از web-storage توسط مرورگر رو بررسی کنیم؟](#چطوری-می‌تونیم-پشتیبانی-از-web-storage-توسط-مرورگر-رو-بررسی-کنیم) | -|48 | [چطوری می‌تونیم پشتیبانی از web-worker توسط مرورگر رو بررسی کنیم؟](#چطوری-می‌تونیم-پشتیبانی-از-web-worker-توسط-مرورگر-رو-بررسی-کنیم) | -|49 | [یه مثال از web-workerها می‌تونی بزنی؟](#یه-مثال-از-web-workerها-میتونی-بزنی) | -|50 | [محدودیت‌های web-workerها روی DOM چیا هستن؟](#محدودیتهای-web-workerها-روی-DOM-چیا-هستن) | -|51 | [Promise چیه؟](#Promise-چیه ) | -|52 | [چرا به promise نیاز داریم؟](#چرا-به-promise-نیاز-داریم) | -|53 | [سه تا وضعیت ممکن برای یه promise چیا هستن؟](#سه-تا-وضعیت-ممکن-برای-یه-promise-چیا-هستن) | -|54 | [توابع callback چی هستن؟](#توابع-callback-چی-هستن) | -|55 | [چرا به توابع callback نیاز داریم؟](#چرا-به-توابع-callback-نیاز-داریم) | -|56 | [Callback-hell یا جهنم توابع callback چیه؟](#Callback-hell-یا-جهنم-توابع-callback-چیه ) | -|57 | [Server-sent-events(SSE) چیه؟](#Server-sent-eventsSSE-چیه ) | -|58 | [چطوری می‌تونیم اعلان‌های server-sent-event رو دریافت کنیم؟](#چطوری-می‌تونیم-اعلانهای-server-sent-event-رو-دریافت-کنیم) | -|59 | [چطوری می‌تونیم پشتیبانی مرورگر برای SSE رو بررسی کنیم؟](#چطوری-می‌تونیم-پشتیبانی-مرورگر-برای-SSE-رو-بررسی-کنیم) | -|60 | [کدوم توابع روی SSE وجود دارن؟](#کدوم-توابع-روی-SSE-وجود-دارن) | -|61 | [اصلی‌ترین قوانین promiseها چیا هستن؟](#اصلیترین-قوانین-promiseها-چیا-هستن) | -|62 | [Callback توی callback چطوری رخ میده؟](#Callback-توی-callback-چطوری-رخ-میده ) | -|63 | [زنجیره promiseها چیه؟](#زنجیره-promiseها-چیه) | -|64 | [کاربرد متد promise.all چیه؟](#کاربرد-متد-promise.all-چیه) | -|65 | [هدف از متد race روی promise چیه؟](#هدف-از-متد-race-روی-promise-چیه) | -|66 | [حالت strict توی جاواسکریپت چی کار می‌کنه؟](#حالت-strict-توی-جاواسکریپت-چی-کار-می‌کنه) | -|67 | [چرا به حالت strict نیاز داریم؟](#چرا-به-حالت-strict-نیاز-داریم) | -|68 | [چطوری می‌تونیم حالت strict رو فعال کنیم؟](#چطوری-می‌تونیم-حالت-strict-رو-فعال-کنیم) | -|69 | [هدف از عملگر نقیض دوتایی(!!) چیه؟](#هدف-از-عملگر-نقیض-دوتایی!!-چیه) | -|70 | [هدف از عملگر delete چیه؟](#هدف-از-عملگر-delete-چیه) | -|71 | [عملگر typeof چیکار می‌کنه؟](#عملگر-typeof-چیکار-می‌کنه) | -|72 | [undefined چیه و چه زمانی undefined می‌گیریم؟](#undefined-چیه-و-چه-زمانی-undefined-می‌گیریم ) | -|73 | [null چیه؟](#null-چیه ) | -|74 | [تفاوت‌های بین null و undefined چیا هستن؟](#تفاوتهای-بین-null-و-undefined-چیا-هستن) | -|75 | [eval چیه؟](#eval-چیه ) | -|76 | [تفاوت‌های بین window و document چیا هستن؟](#تفاوتهای-بین-window-و-document-چیا-هستن) | -|77 | [توی جاواسکریپت چطوری می‌تونیم به history دسترسی داشته باشیم؟](#توی-جاواسکریپت-چطوری-می‌تونیم-به-history-دسترسی-داشته-باشیم) | -|78 | [انواع داده‌های جاواسکریپت کدوما هستن؟](#انواع-دادههای-جاواسکریپت-کدوما-هستن) | -|79 | [isNaN چیه و چیکار می‌کنه؟](#isNaN-چیه-و-چیکار-می‌کنه ) | -|80 | [تفاوت‌های بین undeclared و undefined چیا هستن؟](#تفاوتهای-بین-undeclared-و-undefined-چیا-هستن) | -|81 | [کدوم متغیرها عمومی هستن؟](#کدوم-متغیرها-عمومی-هستن) | -|82 | [مشکلات متغیرهای عمومی چیا هستن؟](#مشکلات-متغیرهای-عمومی-چیا-هستن) | -|83 | [مقدار NaN چیه؟](#مقدار-NaN-چیه) | -|84 | [هدف از تابع isFinite چیه؟](#هدف-از-تابع-isFinite-چیه) | -|85 | [یه event-flow چیه؟](#یه-event-flow-چیه) | -|86 | [Event-bubbling چیه؟](#Event-bubbling-چیه ) | -|87 | [Event-capturing چیه؟](#Event-capturing-چیه ) | -|88 | [چطوری می‌شه یه فرم رو با استفاده از جاواسکریپت ثبت کرد؟](#چطوری-می‌شه-یه-فرم-رو-با-استفاده-از-جاواسکریپت-ثبت-کرد) | -|89 | [چطوری می‌شه به اطلاعات مربوط به سیستم عامل کاربر دسترسی داشت؟](#چطوری-می‌شه-به-اطلاعات-مربوط-به-سیستم-عامل-کاربر-دسترسی-داشت) | -|90 | [تفاوت‌های بین رخدادهای document-load و DOMContentLoaded چیا هستن؟](#تفاوتهای-بین-رخدادهای-document-load-و-DOMContentLoaded-چیا-هستن) | -|91 | [تفاوت‌های بین objectهای native، host و user چیا هستن؟](#تفاوتهای-بین-objectهای-native،-host-و-user-چیا-هستن) | -|92 | [کدوم ابزار و تکنیک‌ها برای دیباگ کردن برنامه جاواسکریپتی استفاده میشن؟](#کدوم-ابزار-و-تکنیکها-برای-دیباگ-کردن-برنامه-جاواسکریپتی-استفاده-میشن) | -|93 | [مزایا و معایب استفاده از promiseها به جای callback چیا هستن؟](#مزایا-و-معایب-استفاده-از-promiseها-به-جای-callback-چیا-هستن) | -|94 | [تفاوت‌های بین attribute و property روی DOM چیا هستن؟](#تفاوتهای-بین-attribute-و-property-روی-DOM-چیا-هستن) | -|95 | [سیاست same-origin چیه؟](#سیاست-same-origin-چیه) | -|96 | [هدف استفاده از void 0 چیه؟](#هدف-استفاده-از-void-0-چیه) | -|97 | [جاواسکریپت یه زبان تفسیری هست یا کامپایلری؟](#جاواسکریپت-یه-زبان-تفسیری-هست-یا-کامپایلری) | -|98 | [آیا جاواسکریپت یه زبان حساس به بزرگی و کوچکی(case-sensitive) حروف است؟](#آیا-جاواسکریپت-یه-زبان-حساس-به-بزرگی-و-کوچکیcase-sensitive-حروف-است) | -|99 | [ارتباطی بین Java و JavaScript وجود داره؟](#ارتباطی-بین-Java-و-JavaScript-وجود-داره) | -|100| [Eventها چی هستن؟](#Eventها-چی-هستن) | -|101| [کی جاواسکریپت رو ساخته؟](#کی-جاواسکریپت-رو-ساخته) | -|102| [هدف از متد preventDefault چیه؟](#هدف-از-متد-preventDefault-چیه) | -|103| [کاربرد متد stopPropagation چیه؟](#کاربرد-متد-stopPropagation-چیه) | -|104| [مراحلی که موقع استفاده از return false توی یه event-handler رخ میده چیا هستن؟](#مراحلی-که-موقع-استفاده-از-return-false-توی-یه-event-handler-رخ-میده-چیا-هستن) | -|105| [BOM چیه؟](#BOM-چیه) | -|106| [موارد استفاده از setTimeout کدوما هستن؟](#موارد-استفاده-از-setTimeout-کدوما-هستن) | -|107| [موارد استفاده از setInterval کدوما هستن؟](#موارد-استفاده-از-setInterval-کدوما-هستن) | -|108| [چرا جاواسکریپت رو به عنوان یه زبان تک thread می‌شناسن؟](#چرا-جاواسکریپت-رو-به-عنوان-یه-زبان-تک-thread-میشناسن) | -|109| [Event-delegation چیه؟](#Event-delegation-چیه) | -|110| [ECMAScript چیه؟](#ECMAScript-چیه) | -|111| [JSON چیه؟](#JSON-چیه) | -|112| [قوانین فرمت JSON کدوما هستن؟](#قوانین-فرمت-JSON-کدوما-هستن) | -|113| [هدف از متد JSON.stringify چیه؟](#هدف-از-متد-JSON.stringify-چیه) | -|114| [چطوری می‌تونیم یه رشته(string) JSON رو تجزیه کنیم؟](#چطوری-می‌تونیم-یه-رشتهstring-JSON-رو-تجزیه-کنیم) | -|115| [چرا به JSON نیاز داریم؟](#چرا-به-JSON-نیاز-داریم) | -|116| [PWAها چی هستن؟](#PWAها-چی-هستن) | -|117| [هدف از متد clearTimeout چیه؟](#هدف-از-متد-clearTimeout-چیه) | -|118| [هدف از متد clearInterval چیه؟](#هدف-از-متد-clearInterval-چیه) | -|119| [توی جاواسکریپت، چطوری می‌شه به یه صفحه جدید redirect انجام داد؟](#توی-جاواسکریپت،-چطوری-می‌شه-به-یه-صفحه-جدید-redirect-انجام-داد) | -|120| [چطوری بررسی می‌کنین که یه string شامل یه substring هست یا نه؟](#چطوری-بررسی-می‌کنین-که-یه-string-شامل-یه-substring-هست-یا-نه) | -|121| [توی جاواسکریپت، چطوری مقدار یه آدرس email رو اعتبارسنجی می‌کنین؟](#توی-جاواسکریپت،-چطوری-مقدار-یه-آدرس-email-رو-اعتبارسنجی-می‌کنین) | -|122| [چطوری می‌تونیم مقدار آدرس url جاری رو بخونیم؟](#چطوری-می‌تونیم-مقدار-آدرس-url-جاری-رو-بخونیم) | -|123| [ویژگی‌های مختلف url روی object مربوط به history کدوما هستن؟](#ویژگیهای-مختلف-url-روی-object-مربوط-به-history-کدوما-هستن) | -|124| [توی جاواسکریپت چطوری می‌تونیم مقدار یه query-string رو بخونیم؟](#توی-جاواسکریپت-چطوری-می‌تونیم-مقدار-یه-query-string-رو-بخونیم) | -|125| [چطوری می‌تونیم بررسی کنیم که آیا یه پراپرتی روی آبجکت وجود داره یا نه؟](#چطوری-می‌تونیم-بررسی-کنیم-که-آیا-یه-پراپرتی-روی-آبجکت-وجود-داره-یا-نه) | -|126| [ری روی یه object حلقه میزنی؟](#چطوری-روی-یه-object-حلقه-میزنی) | -|127| [چطوری تست می‌کنی که یه object خالیه؟](#چطوری-تست-می‌کنی-که-یه-object-خالیه) | -|128| [arguments object چیه؟](#arguments-object-چیه) | -|129| [چطوری حرف اول یه رشته رو به حرف بزرگ تبدیل می‌کنی؟](#چطوری-حرف-اول-یه-رشته-رو-به-حرف-بزرگ-تبدیل-می‌کنی) | -|130| [مزایا و معایب حلقه for چیا هستن؟](#مزایا-و-معایب-حلقه-for-چیا-هستن) | -|131| [چطوری تاریخ جاری رو توی جاواسکریپت نشون میدی؟](#چطوری-تاریخ-جاری-رو-توی-جاواسکریپت-نشون-میدی) | -|132| [چطوری دو تا date object رو با هم مقایسه می‌کنی؟](#چطوری-دو-تا-date-object-رو-با-هم-مقایسه-می‌کنی) | -|133| [چطوری بررسی می‌کنی که یه رشته با یه رشته دیگه شروع می‌شه؟](#چطوری-بررسی-می‌کنی-که-یه-رشته-با-یه-رشته-دیگه-شروع-می‌شه) | -|134| [چطوری یه رشته رو trim می‌کنی؟](#چطوری-یه-رشته-رو-trim-می‌کنی) | -|135| [توی جاواسکریپت چطوری می‌تونیم یه زوج مرتب از key یه valueها بسازیم؟](#توی-جاواسکریپت-چطوری-می‌تونیم-یه-زوج-مرتب-از-key-یه-valueها-بسازیم) | -|136| [آیا عبارت '!--' عملگر خاصی هست؟](#آیا-عبارت-!---عملگر-خاصی-هست) | -|137| [چطوری می‌تونیم به متغیرهامون مقادیر اولیه بدیم؟](#چطوری-می‌تونیم-به-متغیرهامون-مقادیر-اولیه-بدیم) | -|138| [چطوری می‌تونیم متن‌های چند خطی درست کنیم؟](#چطوری-می‌تونیم-متنهای-چند-خطی-درست-کنیم) | -|139| [مدل app-shell چیه؟](#مدل-app-shell-چیه) | -|140| [چطوری می‌تونیم روی یه تابع property اضافه کنیم؟](#چطوری-می‌تونیم-روی-یه-تابع-property-اضافه-کنیم) | -|141| [چطوری می‌تونیم تعداد پارامترهای ورودی یه تابع رو به دست بیاریم؟](#چطوری-می‌تونیم-تعداد-پارامترهای-ورودی-یه-تابع-رو-به-دست-بیاریم) | -|142| [Polyfill چیه؟](#Polyfill-چیه) | -|143| [عبارات Break و continue چی هستن؟](#عبارات-Break-و-continue-چی-هستن) | -|144| [توی جاواسکریپت labelها چیکار می‌کنن؟](#توی-جاواسکریپت-labelها-چیکار-میکنن) | -|145| [مزایای declare کردن متغیرها در اوایل کد چیه؟](#مزایای-declare-کردن-متغیرها-در-اوایل-کد-چیه) | -|146| [مزایای مقداردهی اولیه متغیرها چیه؟](#مزایای-مقداردهی-اولیه-متغیرها-چیه) | -|147| [روش توصیه شده برای ایجاد object چیه؟](#روش-توصیه-شده-برای-ایجاد-object-چیه) | -|148| [چطوری می‌تونیم آرایه‌ JSON تعریف کنیم؟](#چطوری-می‌تونیم-آرایه-JSON-تعریف-کنیم) | -|149| [چطوری می‌تونیم اعداد تصادفی تولید کنیم؟](#چطوری-می‌تونیم-اعداد-تصادفی-تولید-کنیم) | -|150| [می‌تونی یه تابع تولید اعداد تصادفی توی یه بازه مشخص بنویسی؟](#میتونی-یه-تابع-تولید-اعداد-تصادفی-توی-یه-بازه-مشخص-بنویسی) | -|151| [Tree-shaking چیه؟](#Tree-shaking-چیه) | -|152| [دلایل نیاز به tree-shaking کدوما هستن؟](#دلایل-نیاز-به-tree-shaking-کدوما-هستن) | -|153| [آیا استفاده از eval توصیه می‌شه؟](#آیا-استفاده-از-eval-توصیه-می‌شه) | -|154| [Regular-Expression چیه؟](#Regular-Expression-چیه) | -|155| [متدهای رشته که روی Regular-expression مجاز هستن کدوماست؟](#متدهای-رشته-که-روی-Regular-expression-مجاز-هستن-کدوماست) | -|156| [توی Regex بخش modifiersها چیکار می‌کنه؟](#توی-Regex-بخش-modifiersها-چیکار-می‌کنه) | -|157| [پترن‌های regular-expression چیه؟](#پترنهای-regular-expression-چیه) | -|158| [آبجکت RegExp چیه؟](#آبجکت-RegExp-چیه) | -|159| [چطوری روی یه رشته دنبال یه پترن RegExp می‌گردی؟](#چطوری-روی-یه-رشته-دنبال-یه-پترن-RegExp-میگردی) | -|160| [هدف از متد exec چیه؟](#هدف-از-متد-exec-چیه) | -|161| [چطوری استایل‌های یه المنت HTML رو تغییر میدی؟](#چطوری-استایلهای-یه-المنت-HTML-رو-تغییر-میدی) | -|162| [نتیجه عبارت 1+2+'3' چی می‌شه؟](#نتیجه-عبارت-1+2+3-چی-می‌شه) | -|163| [عبارت debugger چیکار می‌کنه؟](#عبارت-debugger-چیکار-می‌کنه) | -|164| [هدف از breakpointها توی debugging چیه؟](#هدف-از-breakpointها-توی-debugging-چیه) | -|165| [آیا می‌تونیم از عبارت‌های رزرو شده در تعریف identifierها(اسم متغیر، کلاس و ...) استفاده کنیم؟](#آیا-می‌تونیم-از-عبارتهای-رزرو-شده-در-تعریف-identifierهااسم-متغیر،-کلاس-و--استفاده-کنیم) | -|166| [چطوری تشخیص بدیم که یه مرورگر mobile هست یا نه؟](#چطوری-تشخیص-بدیم-که-یه-مرورگر-mobile-هست-یا-نه) | -|167| [چطوری بدون Regex تشخیص بدیم که یه مرورگر mobile هست یا نه؟](#چطوری-بدون-Regex-تشخیص-بدیم-که-یه-مرورگر-mobile-هست-یا-نه) | -|168| [چطوری طول و عرض یه تصویر رو با جاواسکریپت به دست میاری؟](#چطوری-طول-و-عرض-یه-تصویر-رو-با-جاواسکریپت-به-دست-میاری) | -|169| [چطوری درخواست‌های synchronous HTTP بزنیم؟](#چطوری-درخواستهای-synchronous-HTTP-بزنیم) | -|170| [چطوری درخواست‌های asynchronous HTTP بزنیم؟](#چطوری-درخواستهای-asynchronous-HTTP-بزنیم) | -|171| [چطوری یه تاریخ رو به یه تاریخ در timezone دیگه تبدیل کنیم؟](#چطوری-یه-تاریخ-رو-به-یه-تاریخ-در-timezone-دیگه-تبدیل-کنیم) | -|172| [چه propertyهایی برای اندازه‌گیزی سایز window به کار میره؟](#چه-propertyهایی-برای-اندازهگیزی-سایز-window-به-کار-میره) | -|173| [عملگر شرطی سه گانه توی جاواسکریپت چیه؟](#عملگر-شرطی-سه-گانه-توی-جاواسکریپت-چیه) | -|174| [آیا می‌شه روی عملگر شرطی زنجیره شرط‌ها رو اعمال کرد؟](#آیا-می‌شه-روی-عملگر-شرطی-زنجیره-شرطها-رو-اعمال-کرد) | -|175| [روش‌های اجرای جاواسکریپت بعد از لود شدن صفحه کدوما هستن؟](#روشهای-اجرای-جاواسکریپت-بعد-از-لود-شدن-صفحه-کدوما-هستن) | -|176| [تفاوت‌های بین proto و prototype کدوما هستن؟](#تفاوتهای-بین-proto-و-prototype-کدوما-هستن) | -|177| [میتونی یه مثال از زمانی که واقعا به سمیکولون(;) نیاز هست بزنی؟](#میتونی-یه-مثال-از-زمانی-که-واقعا-به-سمیکولون-نیاز-هست-بزنی) | -|178| [متد freeze چیکار می‌کنه؟](#متد-freeze-چیکار-می‌کنه) | -|179| [هدف از متد freeze چیه؟](#هدف-از-متد-freeze-چیه) | -|180| [چرا به متد freeze نیاز داریم؟](#چرا-به-متد-freeze-نیاز-داریم) | -|181| [چطوری می‌تونیم زبان ترجیحی یه مرورگر رو تشخیص بدیم؟](#چطوری-می‌تونیم-زبان-ترجیحی-یه-مرورگر-رو-تشخیص-بدیم) | -|182| [چطوری می‌تونیم حرف اول همه کلمات یه رشته رو به حرف بزرگ تبدیل کنیم؟](#چطوری-می‌تونیم-حرف-اول-همه-کلمات-یه-رشته-رو-به-حرف-بزرگ-تبدیل-کنیم) | -|183| [چطوری می‌شه تشخیص داد که جاواسکریپت یه صفحه وب غیرفعال شده؟](#چطوری-می‌شه-تشخیص-داد-که-جاواسکریپت-یه-صفحه-وب-غیرفعال-شده) | -|184| [عملگرهای پشتیبانی شده توسط جاواسکریپت کدوما هستن؟](#عملگرهای-پشتیبانی-شده-توسط-جاواسکریپت-کدوما-هستن) | -|185| [پارامتر rest چیکار می‌کنه؟](#پارامتر-rest-چیکار-می‌کنه) | -|186| [اگه پارامتر rest رو به عنوان آخرین پارامتر استفاده نکنیم چی می‌شه؟](#اگه-پارامتر-rest-رو-به-عنوان-آخرین-پارامتر-استفاده-نکنیم-چی-می‌شه) | -|187| [عملگرهای منطقی باینری توی جاواسکریپت کدوما هستن؟](#عملگرهای-منطقی-باینری-توی-جاواسکریپت-کدوما-هستن) | -|188| [عملگر spread چیکار می‌کنه؟](#عملگر-spread-چیکار-می‌کنه) | -|189| [چطوری تشخیص میدی که یه آبجکت freeze شده یا نه؟](#چطوری-تشخیص-میدی-که-یه-آبجکت-freeze-شده-یا-نه) | -|190| [چطوری بررسی کنیم که دو تا مقدار(شامل آبجکت) با هم برابرن یا نه؟](#چطوری-بررسی-کنیم-که-دو-تا-مقدارشامل-آبجکت-با-هم-برابرن-یا-نه) | -|191| [هدف از متد is روی object چیه؟](#هدف-از-متد-is-روی-object-چیه) | -|192| [چطوری propertyهای یه object رو به یه object دیگه کپی می‌کنی؟](#چطوری-propertyهای-یه-object-رو-به-یه-object-دیگه-کپی-می‌کنی) | -|193| [کاربردهای ممتد assign چیه؟](#کاربردهای-ممتد-assign-چیه) | -|194| [آبجکت proxy چیه؟](#آبجکت-proxy-چیه) | -|195| [هدف از متد seal چیه؟](#هدف-از-متد-seal-چیه) | -|196| [کاربردهای متد seal چیه؟](#کاربردهای-متد-seal-چیه) | -|197| [تفاوت‌های بین متدهای freeze و seal چیا هست؟](#تفاوتهای-بین-متدهای-freeze-و-seal-چیا-هست) | -|198| [چطوری تشخیص میدی که یه آبجکت seal شده یا نه؟](#چطوری-تشخیص-میدی-که-یه-آبجکت-seal-شده-یا-نه) | -|199| [چطوری کلید و مقدارهای enumerable رو به دست میاری؟](#چطوری-کلید-و-مقدارهای-enumerable-رو-به-دست-میاری) | -|200| [تفاوت‌های بین متدهای Object.values و Object.entries چیا هست؟](#تفاوتهای-بین-متدهای-Objectvalues-و-Objectentries-چیا-هست) | -|201| [چطوری لیست کلیدهای یه object رو بدست میاری؟](#چطوری-لیست-کلیدهای-یه-object-رو-بدست-میاری) | -|202| [چطوری یه object با prototype درست می‌کنی؟](#چطوری-یه-object-با-prototype-درست-می‌کنی) | -|203| [WeakSet چیه؟](#WeakSet-چیه) | -|204| [تفاوت‌های بین WeakSet و Set کدوما هستن؟](#تفاوتهای-بین-WeakSet-و-Set-کدوما-هستن) | -|205| [لیست متدهایی که رو WeakSet قابل استفاده هستن رو می‌تونی بگی؟](#لیست-متدهایی-که-رو-WeakSet-قابل-استفاده-هستن-رو-میتونی-بگی) | -|206| [WeakMap چیه؟](#WeakMap-چیه) | -|207| [تفاوت‌های بین WeakMap و Map کدوما هستن؟](#تفاوتهای-بین-WeakMap-و-Map-کدوما-هستن) | -|208| [لیست متدهایی که رو WeakMap قابل استفاده هستن رو می‌تونی بگی؟](#لیست-متدهایی-که-رو-WeakMap-قابل-استفاده-هستن-رو-میتونی-بگی) | -|209| [هدف از متد uneval چیه؟](#هدف-از-متد-uneval-چیه) | -|210| [چطوری یه URL رو encode می‌کنی؟](#چطوری-یه-URL-رو-encode-می‌کنی) | -|211| [چطوری یه URL رو decode می‌کنی؟](#چطوری-یه-URL-رو-decode-می‌کنی) | -|212| [چطوری محتوای یه صفحه رو پرینت می‌گیری؟](#چطوری-محتوای-یه-صفحه-رو-پرینت-می‌گیری) | -|213| [تفاوت‌های بین uneval و eval چیا هستن؟](#تفاوتهای-بین-uneval-و-eval-چیا-هستن) | -|214| [تابع anonymous چیه؟](#تابع-anonymous-چیه) | -|215| [تفاوت تقدم بین متغیرهای local و global چطوریه؟](#تفاوت-تقدم-بین-متغیرهای-local-و-global-چطوریه) | -|216| [accessorهای جاواسکریپت چیکار می‌کنن؟](#accessorهای-جاواسکریپت-چیکار-میکنن) | -|217| [چطوری روی constructor یه Object یه مقدار تعریف می‌کنی؟](#چطوری-روی-constructor-یه-Object-یه-مقدار-تعریف-می‌کنی) | -|218| [تفاوت‌های بین get و defineProperty چیا هست؟](#تفاوتهای-بین-get-و-defineProperty-چیا-هست) | -|219| [مزایای استفاده از Getter و Setter چیه؟](#مزایای-استفاده-از-Getter-و-Setter-چیه) | -|220| [می‌تونیم getter و setter رو با استفاده از متد defineProperty تعریف کنیم؟](#می‌تونیم-getter-و-setter-رو-با-استفاده-از-متد-defineProperty-تعریف-کنیم) | -|221| [هدف استفاده از switch-case چیه؟](#هدف-استفاده-از-switch-case-چیه) | -|222| [چه قواعدی برای استفاده از swtich-case باید رعایت بشه؟](#چه-قواعدی-برای-استفاده-از-swtich-case-باید-رعایت-بشه) | -|223| [نوع داده‌های primitive کدوما هستن؟](#نوع-دادههای-primitive-کدوما-هستن) | -|224| [روش‌های مختلف دسترسی به propertyهای object کدوما هستن؟](#روشهای-مختلف-دسترسی-به-propertyهای-object-کدوما-هستن) | -|225| [قوانین پارامترهای توابع کدوما هستن؟](#قوانین-پارامترهای-توابع-کدوما-هستن) | -|226| [آبجکت error چیه؟](#آبجکت-error-چیه) | -|227| [چه موقعی خطای syntax دریافت می‌کنیم؟](#چه-موقعی-خطای-syntax-دریافت-می‌کنیم) | -|228| [عنوان خطاهای مختلف که روی error-object برمیگردن کدوما هستن؟](#عنوان-خطاهای-مختلف-که-روی-error-object-برمیگردن-کدوما-هستن) | -|229| [عبارات مختلف که در هنگام مدیریت error استفاده میشن کدوما هستن؟](#عبارات-مختلف-که-در-هنگام-مدیریت-error-استفاده-میشن-کدوما-هستن) | -|230| [دو نوع مختلف حلفه‌ها در جاواسکریپت کدوما هستن؟](#دو-نوع-مختلف-حلفهها-در-جاواسکریپت-کدوما-هستن) | -|231| [nodejs چیه؟](#nodejs-چیه) | -|232| [آبجکت Intl چیه؟](#آبجکت-Intl-چیه) | -|233| [چطوری تاریخ و زمان رو بر اساس زبان جاری سیستم کاربر نمایش بدیم؟](#چطوری-تاریخ-و-زمان-رو-بر-اساس-زبان-جاری-سیستم-کاربر-نمایش-بدیم) | -|234| [Iterator چیه؟](#Iterator-چیه) | -|235| [حلفه‌های synchronous(همزمان) چطوری کار می‌کنن؟](#حلفههای-synchronousهمزمان-چطوری-کار-میکنن) | -|236| [Event-loop چیه؟](#Event-loop-چیه) | -|237| [Call-stack چیه؟](#Call-stack-چیه) | -|238| [Event-queue چیه؟](#Event-queue-چیه) | -|239| [Decorator چیه؟](#Decorator-چیه) | -|240| [مقادیر موجود روی آبجکت Intl کدوما هستن؟](#مقادیر-موجود-روی-آبجکت-Intl-کدوما-هستن) | -|241| [عملگر Unary چیه؟](#عملگر-Unary-چیه) | -|242| [چطوری المنت‌های موجود تو یه آرایه رو مرتب می‌کنی؟](#چطوری-المنتهای-موجود-تو-یه-آرایه-رو-مرتب-می‌کنی) | -|243| [هدف از تابع مرتب‌سازی موقع استفاده از متد sort چیه؟](#هدف-از-تابع-مرتبسازی-موقع-استفاده-از-متد-sort-چیه) | -|244| [چطوری آیتم‌های یه آرایه رو معکوس مرتب کنیم؟](#چطوری-آیتمهای-یه-آرایه-رو-معکوس-مرتب-کنیم) | -|245| [چطوری حداقل و حداکثر مقدار یه آرایه رو بدست بیاریم؟](#چطوری-حداقل-و-حداکثر-مقدار-یه-آرایه-رو-بدست-بیاریم) | -|246| [چطوری حداقل و حداکثر مقدار یه آرایه رو بدون استفاده از متدهای Math بدست بیاریم؟](#چطوری-حداقل-و-حداکثر-مقدار-یه-آرایه-رو-بدون-استفاده-از-متدهای-Math-بدست-بیاریم) | -|247| [عبارت خالی چیه و هدف از استفاده ازش چیه؟](#عبارت-خالی-چیه-و-هدف-از-استفاده-ازش-چیه) | -|248| [چطوری metadata یه ماژول رو بدست میاری؟ meta data of a module](#چطوری-metadata-یه-ماژول-رو-بدست-میاری-meta-data-of-a-module) | -|249| [عملگر comma چیه و چیکار می‌کنه؟](#عملگر-comma-چیه-و-چیکار-می‌کنه) | -|250| [مزایای استفاده از عملگر comma چیه؟](#مزایای-استفاده-از-عملگر-comma-چیه) | -|251| [Typescript چیه؟](#Typescript-چیه) | -|252| [تفاوت‌های بین javascript و typescript کدوما هستن؟](#تفاوتهای-بین-javascript-و-typescript-کدوما-هستن) | -|253| [مزایای typescript نسبت به javascript چیاست؟](#مزایای-typescript-نسبت-به-javascript-چیاست) | -|254| [object-initializer چیه؟](#object-initializer-چیه) | -|255| [متد constructor چیه؟](#متد-constructor-چیه) | -|256| [اگه متد constructor رو بیش از یه بار توی کلاس بنویسیم چی می‌شه؟](#اگه-متد-constructor-رو-بیش-از-یه-بار-توی-کلاس-بنویسیم-چی-می‌شه) | -|257| [چطوری متد constructor کلاس والد رو صدا بزنیم؟](#چطوری-متد-constructor-کلاس-والد-رو-صدا-بزنیم) | -|258| [چطوری prototype یه object رو به دست میاری؟](#چطوری-prototype-یه-object-رو-به-دست-میاری) | -|259| [اگه به متد getPrototype رشته پاس بدیم چی می‌شه؟](#اگه-به-متد-getPrototype-رشته-پاس-بدیم-چی-می‌شه) | -|260| [چطوری prototype یه object روی یه object دیگه ست کنیم؟](#چطوری-prototype-یه-object-روی-یه-object-دیگه-ست-کنیم) | -|261| [چطوری بررسی می‌کنی که یه object قابل extend هست یا نه؟](#چطوری-بررسی-می‌کنی-که-یه-object-قابل-extend-هست-یا-نه) | -|262| [چطوری جلوی extend یه object رو بگیریم؟](#چطوری-جلوی-extend-یه-object-رو-بگیریم) | -|263| [روش‌های مختلف برای تبدیل یه object به object غیرقابل extend چیه؟](#روشهای-مختلف-برای-تبدیل-یه-object-به-object-غیرقابل-extend-چیه) | -|264| [چطوری propertyهای متعددی رو روی یه object تعریف می‌کنی؟](#چطوری-propertyهای-متعددی-رو-روی-یه-object-تعریف-می‌کنی) | -|265| [منظور از MEAN توی جاواسکریپت چیه؟ javascript](#منظور-از-MEAN-توی-جاواسکریپت-چیه-javascript) | -|266| [Obfuscation توی جاواسکریپت چیه و چیکار می‌کنه؟ javascript](#Obfuscation-توی-جاواسکریپت-چیه-و-چیکار-می‌کنه-javascript) | -|267| [چه نیازی به Obfuscate کردن داریم؟](#چه-نیازی-به-Obfuscate-کردن-داریم) | -|268| [Minification چیه؟](#Minification-چیه) | -|269| [مزایای minification یا کم حجم‌سازی چیه؟](#مزایای-minification-یا-کم-حجمسازی-چیه) | -|270| [تفاوت‌های بین Obfuscation و Encryption چیه؟](#تفاوتهای-بین-Obfuscation-و-Encryption-چیه) | -|271| [ابزارهای مختلف برای minification کدوما هستن؟](#ابزارهای-مختلف-برای-minification-کدوما-هستن) | -|272| [چطوری اعتبارسنجی فرم رو با javascript انجام میدی؟](#چطوری-اعتبارسنجی-فرم-رو-با-javascript-انجام-میدی) | -|273| [چطوری اعتبارسنجی فرم رو بدون javascript انجام میدی؟](#چطوری-اعتبارسنجی-فرم-رو-بدون-javascript-انجام-میدی) | -|274| [متدهای موجود روی DOM برای اعتبارسنجی کدوما هستن؟](#متدهای-موجود-روی-DOM-برای-اعتبارسنجی-کدوما-هستن) | -|275| [مقادیر موجود روی DOM برای اعتبارسنجی کدوما هستن؟](#مقادیر-موجود-روی-DOM-برای-اعتبارسنجی-کدوما-هستن) | -|276| [مقادیر موجود روی input برای اعتبارسنجی کدوما هستن؟](#مقادیر-موجود-روی-input-برای-اعتبارسنجی-کدوما-هستن) | -|277| [یه مثال از استفاده ویژگی rangeOverflow می‌تونی بزنی؟](#یه-مثال-از-استفاده-ویژگی-rangeOverflow-میتونی-بزنی) | -|278| [جاواسکریپت قابلیت استفاده از enum رو پیش‌فرض توی خودش داره؟](#جاواسکریپت-قابلیت-استفاده-از-enum-رو-پیشفرض-توی-خودش-داره) | -|279| [enum چیه؟](#enum-چیه) | -|280| [چطوری همه propertyهای یه object رو به دست بیاریم؟](#چطوری-همه-propertyهای-یه-object-رو-به-دست-بیاریم) | -|281| [چطوری get property descriptors of an object](#چطوری-get-property-descriptors-of-an-object) | -|282| [گزینه‌هایی که موقع تعریف ویژگی object با descriptor داریم کدوما هستن؟](#گزینههایی-که-موقع-تعریف-ویژگی-object-با-descriptor-داریم-کدوما-هستن) | -|283| [چطوری کلاس‌ها رو extend می‌کنی؟](#چطوری-کلاسها-رو-extend-می‌کنی) | -|284| [چطوری آدرس صفحه رو بدون رفرش صفحه عوض کنیم؟](#چطوری-آدرس-صفحه-رو-بدون-رفرش-صفحه-عوض-کنیم) | -|285| [چطوری بررسی می‌کنی که یه آرایه یه مقدار مشخص رو داره یا نه؟](#چطوری-بررسی-می‌کنی-که-یه-آرایه-یه-مقدار-مشخص-رو-داره-یا-نه) | -|286| [چطوری آرایه‌های scalar رو با هم مقایسه می‌کنی؟](#چطوری-آرایههای-scalar-رو-با-هم-مقایسه-می‌کنی) | -|287| [چطوری می‌شه پارامترهای صفحه رو از متد GET گرفت؟](#چطوری-می‌شه-پارامترهای-صفحه-رو-از-متد-GET-گرفت) | -|288| [چطوری اعداد رو می‌شه سه رقم سه رقم جدا کرد؟](#چطوری-اعداد-رو-می‌شه-سه-رقم-سه-رقم-جدا-کرد) | -|289| [تفاوت‌ بین java و javascript چیه؟](#تفاوت-بین-java-و-javascript-چیه) | -|290| [آیا جاواسکریپت namespace رو پشتیبانی می‌کنه؟](#آیا-جاواسکریپت-namespace-رو-پشتیبانی-می‌کنه) | -|291| [چطوری namespace تعریف می‌کنی؟](#چطوری-namespace-تعریف-می‌کنی) | -|292| [چطوری می‌تونیم تکه کد جاواسکریپت داخل یه iframe رو از صفحه والد صدا بزنیم؟](#چطوری-می‌تونیم-تکه-کد-جاواسکریپت-داخل-یه-iframe-رو-از-صفحه-والد-صدا-بزنیم) | -|293| [چطوری می‌شه اختلاف timezone رو از آبجکت date بگیریم؟](#چطوری-می‌شه-اختلاف-timezone-رو-از-آبجکت-date-بگیریم) | -|294| [چطوری فایل‌های CSS و JS رو به شکل داینامیک بارگذاری کنیم؟](#چطوری-فایلهای-CSS-و-JS-رو-به-شکل-داینامیک-بارگذاری-کنیم) | -|295| [روش‌های مختلف برای پیدا کردن elementها توی DOM کدوما هستن؟](#روشهای-مختلف-برای-پیدا-کردن-elementها-توی-DOM-کدوما-هستن) | -|296| [jQuery چیه؟](#jQuery-چیه) | -|297| [موتور V8 جاواسکریپت چیه؟](#موتور-V8-جاواسکریپت-چیه) | -|298| [چرا ما جاواسکریپت رو به عنوان یه زبان داینامیک می‌شناسیم؟](#چرا-ما-جاواسکریپت-رو-به-عنوان-یه-زبان-داینامیک-میشناسیم) | -|299| [عملگر void چیکار می‌کنه؟](#عملگر-void-چیکار-می‌کنه) | -|300| [چطوری می‌شه نمایشگر موس صفحه رو به درحال لود تغییر داد؟](#چطوری-می‌شه-نمایشگر-موس-صفحه-رو-به-درحال-لود-تغییر-داد) | -|301| [چطوری می‌شه یه حلقه بی‌نهایت درست کرد؟](#چطوری-می‌شه-یه-حلقه-بینهایت-درست-کرد) | -|302| [چرا باید در استفاده از عبارت with تجدیدنظر کرد؟](#چرا-باید-در-استفاده-از-عبارت-with-تجدیدنظر-کرد) | -|303| [خروجی این حلقه‌ها چی می‌شه؟](#خروجی-این-حلقهها-چی-می‌شه) | -|304| [می‌تونی یه سری از ویژگی‌های ES6 رو اسم ببری؟](#میتونی-یه-سری-از-ویژگیهای-ES6-رو-اسم-ببری) | -|305| [ES6 چیه؟](#ES6-چیه) | -|306| [آیا می‌تونیم متغیرهای تعریف شده با let و const رو مجددا declare کنیم؟](#آیا-می‌تونیم-متغیرهای-تعریف-شده-با-let-و-const-رو-مجددا-declare-کنیم) | -|307| [آیا استفاده از const برای تعریف متغیر اونا رو immutable می‌کنه؟](#آیا-استفاده-از-const-برای-تعریف-متغیر-اونا-رو-immutable-می‌کنه) | -|308| [parameterهای پیش‌فرض چی هستن؟](#parameterهای-پیشفرض-چی-هستن) | -|309| [template-literalها چی هستن؟](#template-literalها-چی-هستن) | -|310| [چطوری رشته‌های چند خطی رو توی template-literalها می‌نویسیم؟](#چطوری-رشتههای-چند-خطی-رو-توی-template-literalها-مینویسیم) | -|311| [template-literal‌های تودرتو چی هستن؟](#template-literalهای-تودرتو-چی-هستن) | -|312| [tagged-templateها چی هستن؟](#tagged-templateها-چی-هستن) | -|313| [رشته‌های خام چی هستن؟](#رشتههای-خام-چی-هستن) | -|314| [assign کردن با destructuring چیه و چطوری انجام می‌شه؟](#assign-کردن-با-destructuring-چیه-و-چطوری-انجام-می‌شه) | -|315| [موقع assign کردن با destructuring چطوری می‌شه مقدار اولیه تعریف کرد؟](#موقع-assign-کردن-با-destructuring-چطوری-می‌شه-مقدار-اولیه-تعریف-کرد) | -|316| [چطوری می‌تونیم مقدار یه آرایه رو با استفاده از destructuring-assignment تعویض کنیم؟](#چطوری-می‌تونیم-مقدار-یه-آرایه-رو-با-استفاده-از-destructuring-assignment-تعویض-کنیم) | -|317| [Enhanced-object-literalها چی هستن؟](#Enhanced-object-literalها-چی-هستن) | -|318| [importهای داینامیک چی هستن؟](#importهای-داینامیک-چی-هستن) | -|319| [کاربرد importهای داینامیک چیه؟](#کاربرد-importهای-داینامیک-چیه) | -|320| [آرایه‌های نوع‌دار(typed-arrays) چیه؟](#آرایههای-نوعدارtyped-arrays-چیه) | -|321| [مزایای لودر ماژول‌ها چیه؟](#مزایای-لودر-ماژولها-چیه) | -|322| [collation چیه؟](#collation-چیه) | -|323| [عبارت for...of چیه؟](#عبارت-forof-چیه) | -|324| [خروجی عملگر spread روی آرایه زیر چیه؟](#خروجی-عملگر-spread-روی-آرایه-زیر-چیه) | -|325| [آیا PostMessage امنه؟](#آیا-PostMessage-امنه) | -|326| [مشکلات استفاده از postmessage با origin روی wildcard چیه؟](#مشکلات-استفاده-از-postmessage-با-origin-روی-wildcard-چیه) | -|327| [چطوری از دریافت postMessageهای ناخواسته و ناامن از طرف هکرها جلوگیری کنیم؟](#چطوری-از-دریافت-postMessageهای-ناخواسته-و-ناامن-از-طرف-هکرها-جلوگیری-کنیم) | -|328| [می‌تونیم کلا postMessageها رو غیرفعال کنیم؟](#می‌تونیم-کلا-postMessageها-رو-غیرفعال-کنیم) | -|329| [آیا postMessageها به صورت synchronous و همزمان کار می‌کنن؟](#آیا-postMessageها-به-صورت-synchronous-و-همزمان-کار-میکنن) | -|330| [پارادیم زبان جاواسکریپت چیه؟](#پارادیم-زبان-جاواسکریپت-چیه) | -|331| [تفاوت‌های بین جاواسکریپت داخلی و خارجی چیه؟](#تفاوتهای-بین-جاواسکریپت-داخلی-و-خارجی-چیه) | -|332| [آیا جاواسکریپت سریعتر از اسکریپت‌های سمت سرور است؟](#آیا-جاواسکریپت-سریعتر-از-اسکریپتهای-سمت-سرور-است) | -|333| [چطوری وضعیت چک بودن یه checkbox رو بدست بیاریم؟](#چطوری-وضعیت-چک-بودن-یه-checkbox-رو-بدست-بیاریم) | -|334| [هدف از عملگر double-tilde چیه؟](#هدف-از-عملگر-double-tilde-چیه) | -|335| [چطوری یه کاراکتر رو به کد ASCII تبدیل کنیم؟](#چطوری-یه-کاراکتر-رو-به-کد-ASCII-تبدیل-کنیم) | -|336| [ArrayBuffer چیه؟](#ArrayBuffer-چیه) | -|337| [خروجی کد زیر چی خواهد بود؟](#خروجی-کد-زیر-چی-خواهد-بود) | -|338| [هدف از Error-object چیه؟](#هدف-از-Error-object-چیه) | -|339| [هدف از EvalError-object چیه؟](#هدف-از-EvalError-object-چیه) | -|340| [خطاهایی که در حالت strict-mode رخ میدن ولی در غیر اون وجود ندارن کدوما هستن؟](#خطاهایی-که-در-حالت-strict-mode-رخ-میدن-ولی-در-غیر-اون-وجود-ندارن-کدوما-هستن) | -|341| [آیا همه objectها دارای prototype هستن؟](#آیا-همه-objectها-دارای-prototype-هستن) | -|342| [تفاوت‌های بین parameter و argument چیه؟](#تفاوتهای-بین-parameter-و-argument-چیه) | -|343| [هدف از متد some روی آرایه‌ها چیه؟](#هدف-از-متد-some-روی-آرایهها-چیه) | -|344| [چطوری دو یا تعداد بیشتری از آرایه‌ها رو با هم ترکیب کنیم؟](#چطوری-دو-یا-تعداد-بیشتری-از-آرایهها-رو-با-هم-ترکیب-کنیم) | -|345| [تفاوت‌های بین Shallow و Deep کپی چیه؟](#تفاوتهای-بین-Shallow-و-Deep-کپی-چیه) | -|346| [چطوری می‌تونیم به یه تعداد مشخص از یه رشته کپی کنیم؟](#چطوری-می‌تونیم-به-یه-تعداد-مشخص-از-یه-رشته-کپی-کنیم) | -|347| [چطوری همه stringهای match شده با یه regular-expression رو برگردونیم؟](#چطوری-همه-stringهای-match-شده-با-یه-regular-expression-رو-برگردونیم) | -|348| [چطوری یه رشته رو از اول یا از آخر trim کنیم؟](#چطوری-یه-رشته-رو-از-اول-یا-از-آخر-trim-کنیم) | -|349| [خروجی کنسول زیر با عملگر unary چی می‌شه؟](#خروجی-کنسول-زیر-با-عملگر-unary-چی-می‌شه) | -|350| [آیا جاواسکریپت از mixinها استفاده می‌کنه؟](#آیا-جاواسکریپت-از-mixinها-استفاده-می‌کنه) | -|351| [تابع thunk چیه و چیکار می‌کنه؟](#تابع-thunk-چیه-و-چیکار-می‌کنه) | -|352| [thunkهای asynchronous چیکار می‌کنن؟](#thunkهای-asynchronous-چیکار-میکنن) | -|353| [خروجی فراخوانی‌های توابع زیر چی می‌شه؟](#خروجی-فراخوانیهای-توابع-زیر-چی-می‌شه) | -|354| [چطوری همه خطوط جدید رو از یه رشته حذف کرد؟](#چطوری-همه-خطوط-جدید-رو-از-یه-رشته-حذف-کرد) | -|355| [تفاوت‌ بین reflow و repaint چیه؟](#تفاوت-بین-reflow-و-repaint-چیه) | -|356| [اگه قبل از یه آرایه عملگر نفی «!» بزاریم چی می‌شه؟](#اگه-قبل-از-یه-آرایه-عملگر-نفی-«!»-بزاریم-چی-می‌شه) | -|357| [اگه دو تا آرایه رو با هم جمع ببندیم چی می‌شه؟](#اگه-دو-تا-آرایه-رو-با-هم-جمع-ببندیم-چی-می‌شه) | -|358| [اگه عملگر جمع «+» روی قبل از مقادیر falsy قرار بدیم چی می‌شه؟](#اگه-عملگر-جمع-«+»-روی-قبل-از-مقادیر-falsy-قرار-بدیم-چی-می‌شه) | -|359| [چطوری با استفاده از آرایه‌ها و عملگرهای منطقی می‌تونیم رشته self رو تولید کنیم؟](#چطوری-با-استفاده-از-آرایهها-و-عملگرهای-منطقی-می‌تونیم-رشته-self-رو-تولید-کنیم) | -|360| [چطوری می‌تونیم مقادیر falsy رو از آرایه حذف کنیم؟](#چطوری-می‌تونیم-مقادیر-falsy-رو-از-آرایه-حذف-کنیم) | -|361| [چطوری مقادیر تکراری رو از یه آرایه حذف کنیم؟](#چطوری-مقادیر-تکراری-رو-از-یه-آرایه-حذف-کنیم) | -|362| [aliaseهای همزمان با destructuring چطوری کار می‌کنن؟](#aliaseهای-همزمان-با-destructuring-چطوری-کار-میکنن) | -|363| [چطوری آیتم‌های یه آرایه رو بدون استفاده از متد map پیمایش کنیم؟](#چطوری-آیتمهای-یه-آرایه-رو-بدون-استفاده-از-متد-map-پیمایش-کنیم) | -|364| [چطوری یه آرایه رو خالی کنیم؟](#چطوری-یه-آرایه-رو-خالی-کنیم) | -|365| [چطوری اعداد رو با تعداد رقم اعشار مشخص رند می‌کنی؟](#چطوری-اعداد-رو-با-تعداد-رقم-اعشار-مشخص-رند-می‌کنی) | -|366| [ساده‌ترین روش برای تبدیل آرایه به object چیه؟](#سادهترین-روش-برای-تبدیل-آرایه-به-object-چیه) | -|367| [چطوری یه آرایه با یه سری داده درست کنیم؟](#چطوری-یه-آرایه-با-یه-سری-داده-درست-کنیم) | -|368| [متغیرهای موجود روی آبجکت console کدوما هستن؟](#متغیرهای-موجود-روی-آبجکت-console-کدوما-هستن) | -|369| [می‌شه پیام‌های کنسول رو استایل‌دهی کرد؟](#می‌شه-پیامهای-کنسول-رو-استایلدهی-کرد) | -|370| [هدف از متد dir روی آبجکت console چیه؟](#هدف-از-متد-dir-روی-آبجکت-console-چیه) | -|371| [آیا می‌شه المنت‌های HTML رو توی console دیباگ کرد؟](#آیا-می‌شه-المنتهای-HTML-رو-توی-console-دیباگ-کرد) | -|372| [چطوری می‌شه داده‌ها رو به شکل جدولی توی console نمایش بدیم؟](#چطوری-می‌شه-دادهها-رو-به-شکل-جدولی-توی-console-نمایش-بدیم) | -|373| [چطوری می‌شه بررسی کرد که یه پارامتر Number هست یا نه؟](#چطوری-می‌شه-بررسی-کرد-که-یه-پارامتر-Number-هست-یا-نه) | -|374| [چطوری یه متن رو می‌تونیم به clipboard کپی کنیم؟](#چطوری-یه-متن-رو-می‌تونیم-به-clipboard-کپی-کنیم) | -|375| [چطوری می‌شه timestamp رو بدست آورد؟](#چطوری-می‌شه-timestamp-رو-بدست-آورد) | -|376| [چطوری یه آرایه چندسطحی رو تک سطحی کنیم؟](#چطوری-یه-آرایه-چندسطحی-رو-تک-سطحی-کنیم) | -|377| [ساده‌ترین روش برای بررسی چندشرطی چیه؟](#سادهترین-روش-برای-بررسی-چندشرطی-چیه) | -|378| [چطوری کلیک روی دکمه برگشت مرورگر رو متوجه بشیم؟](#چطوری-کلیک-روی-دکمه-برگشت-مرورگر-رو-متوجه-بشیم) | -|379| [چطوری می‌تونیم کلیک راست رو غیرفعال کنیم؟](#چطوری-می‌تونیم-کلیک-راست-رو-غیرفعال-کنیم) | -|380| [object-wrapperها چی هستن؟](#object-wrapperها-چی-هستن) | -|381| [AJAX چیه؟](#AJAX-چیه) | -|382| [روش‌های مختلف مدیریت یه کد Asynchronous چیه؟](#روشهای-مختلف-مدیریت-یه-کد-Asynchronous-چیه) | -|383| [چطوری یه درخواست fetch رو کنسل کنیم؟](#چطوری-یه-درخواست-fetch-رو-کنسل-کنیم) | -|384| [Speech-API چیه؟](#Speech-API-چیه) | -|385| [حداقل timeout توی throttling چقدره؟](#حداقل-timeout-توی-throttling-چقدره) | -|386| [چطوری می‌شه یه timeout صفر توی مرورگر اجرا کرد؟](#چطوری-می‌شه-یه-timeout-صفر-توی-مرورگر-اجرا-کرد) | -|387| [taskها توی event-loop چی هستن؟](#taskها-توی-event-loop-چی-هستن) | -|388| [microtaskها چی هستن؟](#microtaskها-چی-هستن) | -|389| [event-loopهای مختلف کدوما هستن؟](#event-loopهای-مختلف-کدوما-هستن) | -|390| [هدف از queueMicrotask چیه؟](#هدف-از-queueMicrotask-چیه) | -|391| [چطوری می‌شه از کتابخونه‌های جاواسکریپت توی فایل typescript استفاده کرد؟](#چطوری-می‌شه-از-کتابخونههای-جاواسکریپت-توی-فایل-typescript-استفاده-کرد) | -|392| [تفاوت‌های بین promiseها و observableها کدوما هستن؟](#تفاوتهای-بین-promiseها-و-observableها-کدوما-هستن) | -|393| [heap چیه؟](#heap-چیه) | -|394| [event-table چیه؟](#event-table-چیه) | -|395| [صف microTask چیه؟](#صف-microTask-چیه) | -|396| [تفاوت بین shim و polyfill چیه؟](#تفاوت-بین-shim-و-polyfill-چیه) | -|397| [چطوری متوجه primitive یا غیر primitive بودن یه نوع داده میشیم؟](#چطوری-متوجه-primitive-یا-غیر-primitive-بودن-یه-نوع-داده-میشیم) | -|398| [babel چیه؟](#babel-چیه) | -|399| [آیا Node.js به شکل کامل تک thread کار می‌کنه؟](#آیا-Nodejs-به-شکل-کامل-تک-thread-کار-می‌کنه) | -|400| [کاربردهای مرسوم observableها کدوما هستن؟](#کاربردهای-مرسوم-observableها-کدوما-هستن) | -|401| [RxJS چیه؟](#RxJS-چیه) | -|402| [تفاوت بین Function-constructor و function-declaration چیه؟](#تفاوت-بین-Function-constructor-و-function-declaration-چیه) | -|403| [شرط Short-circuit یا اتصال کوتاه چیه؟](#شرط-Short-circuit-یا-اتصال-کوتاه-چیه) | -|404| [ساده‌ترین روش برای تغییر سایز یه آرایه چیه؟](#سادهترین-روش-برای-تغییر-سایز-یه-آرایه-چیه) | -|405| [observable چیه؟](#observable-چیه) | -|406| [تفاوت‌های بین توابع و کلاس‌ها چیه؟](#تفاوتهای-بین-توابع-و-کلاسها-چیه) | -|407| [تابع async چیه؟](#تابع-async-چیه) | -|408| [چطوری خطاهای ایجاد شده هنگام استفاده از promiseها رو کنترل کنیم؟](#چطوری-خطاهای-ایجاد-شده-هنگام-استفاده-از-promiseها-رو-کنترل-کنیم) | -|409| [Deno چیه؟](#Deno-چیه) | -|410| [توی جاواسکریپت چطوری یه object قابل پیمایش درست کنیم؟](#توی-جاواسکریپت-چطوری-یه-object-قابل-پیمایش-درست-کنیم) | -|411| [روش مناسب برای فراخوانی توابع بازگشتی چیه؟](#روش-مناسب-برای-فراخوانی-توابع-بازگشتی-چیه) | -|412| [چطوری بررسی کنیم که یه آبجکت promise هست یا نه؟](#چطوری-بررسی-کنیم-که-یه-آبجکت-promise-هست-یا-نه) | -|413| [چطوری متوجه بشیم که یا تابع با تابع constructor صدا زده شده یا نه؟](#چطوری-متوجه-بشیم-که-یا-تابع-با-تابع-constructor-صدا-زده-شده-یا-نه) | -|414| [تفاوت‌های بین آبجکت argument و پارامتر rest چیه؟](#تفاوتهای-بین-آبجکت-argument-و-پارامتر-rest-چیه) | -|415| [تفاوت‌های بین عملگر spread و پارامتر rest چیه؟](#تفاوتهای-بین-عملگر-spread-و-پارامتر-rest-چیه) | -|416| [نوع‌های مختلف generatorها کدوما هستن؟](#نوعهای-مختلف-generatorها-کدوما-هستن) | -|417| [iterableهای built-in کدوما هستن؟](#iterableهای-built-in-کدوما-هستن) | -|418| [تفاوت‌های بین حلقه for...of و for...in چیه؟](#تفاوتهای-بین-حلقه-forof-و-forin-چیه) | -|419| [چطوری propertyهای instance و غیر instanceای تعریف می‌کنی؟](#چطوری-propertyهای-instance-و-غیر-instanceای-تعریف-می‌کنی) | -|420| [تفاوت‌های بین isNaN و Number.isNaN کدوما هستن؟](#تفاوتهای-بین-isNaN-و-NumberisNaN-کدوما-هستن) | +| ردیف | سوال | صفحه | +| ---- | --------- | ------- | +|1 | [روش‌های ایجاد objects توی جاواسکریپت چیا هستن؟](#روشهای-ایجاد-objects-توی-جاواسکریپت-چیا-هستن) | | +|2 | [زنجیره prototype چیه؟](#زنجیره-prototype-چیه) | | +|3 | [تفاوت‌های بین Call، Apply و Bind چیا هستن؟](#تفاوتهای-بین-Call،-Apply-و-Bind-چیا-هستن) | | +|4 | [فرمت JSON چیه و عملیات‌های معمول بر روی آن چیا هستن؟](#فرمت-JSON-چیه-و-عملیاتهای-معمول-بر-روی-آن-چیا-هستن) | | +|5 | [هدف از متد slice روی آرایه‌ها چیه؟](#هدف-از-متد-slice-روی-آرایهها-چیه) | | +|6 | [هدف از متد splice روی آرایه‌ها چیه؟](#هدف-از-متد-splice-روی-آرایهها-چیه) | | +|7 | [تفاوت متدهای slice و splice چیا هستن؟](#تفاوت-متدهای-slice-و-splice-چیا-هستن) | | +|8 | [تفاوت‌های Object و Map چیا هستن؟](#تفاوتهای-Object-و-Map-چیا-هستن) | | +|9 | [تفاوت‌های بین عملگرهای == و === چیا هستن؟](#تفاوتهای-بین-عملگرهای-و-چیا-هستن) | | +|10 | [توابع lambda یا arrow-function چی هستن؟](#توابع-lambda-یا-arrow-function-چی-هستن) | | +|11 | [یه تابع first-class چجور تابعی‌ـه؟](#یه-تابع-first-class-چجور-تابعیـه) | | +|12 | [یه تابع first-order چجور تابعی‌ـه؟](#یه-تابع-first-order-چجور-تابعیـه) | | +|13 | [یه تابع higher-order چجور تابعی‌ـه؟](#یه-تابع-higher-order-چجور-تابعیـه) | | +|14 | [یه تابع unary چجور تابعی‌ـه؟](#یه-تابع-unary-چجور-تابعیـه) | | +|15 | [currying توابع یعنی چی؟](#currying-توابع-یعنی-چی) | | +|16 | [چه توابعی pure هستن؟](#چه-توابعی-pure-هستن) | | +|17 | [هدف از کلمه کلیدی let چیه؟](#هدف-از-کلمه-کلیدی-let-چیه) | | +|18 | [تفاوت‌های کلمات کلیدی let و var چیا هستن؟](#تفاوتهای-کلمات-کلیدی-let-و-var-چیا-هستن) | | +|19 | [دلیل انتخاب کلمه کلیدی let چیه؟](#دلیل-انتخاب-کلمه-کلیدی-let-چیه) | | +|20 | [چطوری می‌تونیم توی بلوک مربوط به switch بدون دریافت خطا متغیر تعریف کنیم؟](#چطوری-می‌تونیم-توی-بلوک-مربوط-به-switch-بدون-دریافت-خطا-متغیر-تعریف-کنیم) | | +|21 | [Temporal-Dead-Zone چیه؟](#Temporal-Dead-Zone-چیه ) | | +|22 | [IIFE(توابع بلافاصله صدا زده شده) چی هستن؟](#IIFEتوابع-بلافاصله-صدا-زده-شده-چی-هستن) | | +|23 | [مزایای استفاده از moduleها چیه؟](#مزایای-استفاده-از-moduleها-چیه) | | +|24 | [Memoization چیه؟](#Memoization-چیه) | | +|25 | [Hoisting چیه؟](#Hoisting-چیه) | | +|26 | [Classها توی ES6 چی هستن؟](#Classها-توی-ES6-چی-هستن) | | +|27 | [Closureها چیا هستن؟](#Closureها-چیا-هستن) | | +|28 | [Moduleها چیا هستن؟](#Moduleها-چیا-هستن) | | +|29 | [چرا به moduleها نیاز داریم؟](#چرا-به-moduleها-نیاز-داریم) | | +|30 | [توی جاواسکریپت scope چیه و چیکار می‌کنه؟](#توی-جاواسکریپت-scope-چیه-و-چیکار-می‌کنه) | | +|31 | [service-worker چیه؟](#service-worker-چیه) | | +|32 | [توی service-worker چطوری می‌شه DOM رو دستکاری کرد؟](#توی-service-worker-چطوری-می‌شه-DOM-رو-دستکاری-کرد) | | +|33 | [چطوری می‌تونیم بین ریست شدن‌های service-worker داده‌های مورد نظرمون رو مجدد استفاده کنیم؟](#چطوری-می‌تونیم-بین-ریست-شدنهای-service-worker-دادههای-مورد-نظرمون-رو-مجدد-استفاده-کنیم) | | +|34 | [IndexedDB چیه؟](#IndexedDB-چیه) | | +|35 | [Web-storage چیه؟](#Web-storage-چیه) | | +|36 | [Post-message چیه؟](#Post-message-چیه) | | +|37 | [Cookie چیه؟](#Cookie-چیه) | | +|38 | [چرا به cookie نیاز داریم؟](#چرا-به-cookie-نیاز-داریم) | | +|39 | [گزینه‌های قابل تنظیم توی cookie چیا هستن؟](#گزینههای-قابل-تنظیم-توی-cookie-چیا-هستن) | | +|40 | [چطوری می‌شه یه cookie رو حذف کرد؟](#چطوری-می‌شه-یه-cookie-رو-حذف-کرد) | | +|41 | [تفاوت‌های بین cookie، local-storage و session-storage چیا هستن؟](#تفاوتهای-بین-cookie،-local-storage-و-session-storage-چیا-هستن) | | +|42 | [تفاوت‌های بین localStorage و sessionStorage چیا هستن؟](#تفاوتهای-بین-localStorage-و-sessionStorage-چیا-هستن) | | +|43 | [چطوری به web-storage دسترسی پیدا می‌کنی؟](#چطوری-به-web-storage-دسترسی-پیدا-می‌کنی) | | +|44 | [چه متد‌هایی روی session-storage قابل استفاده هستن؟](#چه-متدهایی-روی-session-storage-قابل-استفاده-هستن) | | +|45 | [رخداد storage چیه و چطوری ازش استفاده می‌کنیم؟](#رخداد-storage-چیه-و-چطوری-ازش-استفاده-می‌کنیم) | | +|46 | [چرا به web-storage نیاز داریم؟](#چرا-به-web-storage-نیاز-داریم) | | +|47 | [چطوری می‌تونیم پشتیبانی از web-storage توسط مرورگر رو بررسی کنیم؟](#چطوری-می‌تونیم-پشتیبانی-از-web-storage-توسط-مرورگر-رو-بررسی-کنیم) | | +|48 | [چطوری می‌تونیم پشتیبانی از web-worker توسط مرورگر رو بررسی کنیم؟](#چطوری-می‌تونیم-پشتیبانی-از-web-worker-توسط-مرورگر-رو-بررسی-کنیم) | | +|49 | [یه مثال از web-workerها می‌تونی بزنی؟](#یه-مثال-از-web-workerها-میتونی-بزنی) | | +|50 | [محدودیت‌های web-workerها روی DOM چیا هستن؟](#محدودیتهای-web-workerها-روی-DOM-چیا-هستن) | | +|51 | [Promise چیه؟](#Promise-چیه ) | | +|52 | [چرا به promise نیاز داریم؟](#چرا-به-promise-نیاز-داریم) | | +|53 | [سه تا وضعیت ممکن برای یه promise چیا هستن؟](#سه-تا-وضعیت-ممکن-برای-یه-promise-چیا-هستن) | | +|54 | [توابع callback چی هستن؟](#توابع-callback-چی-هستن) | | +|55 | [چرا به توابع callback نیاز داریم؟](#چرا-به-توابع-callback-نیاز-داریم) | | +|56 | [Callback-hell یا جهنم توابع callback چیه؟](#Callback-hell-یا-جهنم-توابع-callback-چیه ) | | +|57 | [Server-sent-events(SSE) چیه؟](#Server-sent-eventsSSE-چیه ) | | +|58 | [چطوری می‌تونیم اعلان‌های server-sent-event رو دریافت کنیم؟](#چطوری-می‌تونیم-اعلانهای-server-sent-event-رو-دریافت-کنیم) | | +|59 | [چطوری می‌تونیم پشتیبانی مرورگر برای SSE رو بررسی کنیم؟](#چطوری-می‌تونیم-پشتیبانی-مرورگر-برای-SSE-رو-بررسی-کنیم) | | +|60 | [کدوم توابع روی SSE وجود دارن؟](#کدوم-توابع-روی-SSE-وجود-دارن) | | +|61 | [اصلی‌ترین قوانین promiseها چیا هستن؟](#اصلیترین-قوانین-promiseها-چیا-هستن) | | +|62 | [Callback توی callback چطوری رخ میده؟](#Callback-توی-callback-چطوری-رخ-میده ) | | +|63 | [زنجیره promiseها چیه؟](#زنجیره-promiseها-چیه) | | +|64 | [کاربرد متد promise.all چیه؟](#کاربرد-متد-promise.all-چیه) | | +|65 | [هدف از متد race روی promise چیه؟](#هدف-از-متد-race-روی-promise-چیه) | | +|66 | [حالت strict توی جاواسکریپت چی کار می‌کنه؟](#حالت-strict-توی-جاواسکریپت-چی-کار-می‌کنه) | | +|67 | [چرا به حالت strict نیاز داریم؟](#چرا-به-حالت-strict-نیاز-داریم) | | +|68 | [چطوری می‌تونیم حالت strict رو فعال کنیم؟](#چطوری-می‌تونیم-حالت-strict-رو-فعال-کنیم) | | +|69 | [هدف از عملگر نقیض دوتایی(!!) چیه؟](#هدف-از-عملگر-نقیض-دوتایی!!-چیه) | | +|70 | [هدف از عملگر delete چیه؟](#هدف-از-عملگر-delete-چیه) | | +|71 | [عملگر typeof چیکار می‌کنه؟](#عملگر-typeof-چیکار-می‌کنه) | | +|72 | [undefined چیه و چه زمانی undefined می‌گیریم؟](#undefined-چیه-و-چه-زمانی-undefined-می‌گیریم ) | | +|73 | [null چیه؟](#null-چیه ) | | +|74 | [تفاوت‌های بین null و undefined چیا هستن؟](#تفاوتهای-بین-null-و-undefined-چیا-هستن) | | +|75 | [eval چیه؟](#eval-چیه ) | | +|76 | [تفاوت‌های بین window و document چیا هستن؟](#تفاوتهای-بین-window-و-document-چیا-هستن) | | +|77 | [توی جاواسکریپت چطوری می‌تونیم به history دسترسی داشته باشیم؟](#توی-جاواسکریپت-چطوری-می‌تونیم-به-history-دسترسی-داشته-باشیم) | | +|78 | [انواع داده‌های جاواسکریپت کدوما هستن؟](#انواع-دادههای-جاواسکریپت-کدوما-هستن) | | +|79 | [isNaN چیه و چیکار می‌کنه؟](#isNaN-چیه-و-چیکار-می‌کنه ) | | +|80 | [تفاوت‌های بین undeclared و undefined چیا هستن؟](#تفاوتهای-بین-undeclared-و-undefined-چیا-هستن) | | +|81 | [کدوم متغیرها عمومی هستن؟](#کدوم-متغیرها-عمومی-هستن) | | +|82 | [مشکلات متغیرهای عمومی چیا هستن؟](#مشکلات-متغیرهای-عمومی-چیا-هستن) | | +|83 | [مقدار NaN چیه؟](#مقدار-NaN-چیه) | | +|84 | [هدف از تابع isFinite چیه؟](#هدف-از-تابع-isFinite-چیه) | | +|85 | [یه event-flow چیه؟](#یه-event-flow-چیه) | | +|86 | [Event-bubbling چیه؟](#Event-bubbling-چیه ) | | +|87 | [Event-capturing چیه؟](#Event-capturing-چیه ) | | +|88 | [چطوری می‌شه یه فرم رو با استفاده از جاواسکریپت ثبت کرد؟](#چطوری-می‌شه-یه-فرم-رو-با-استفاده-از-جاواسکریپت-ثبت-کرد) | | +|89 | [چطوری می‌شه به اطلاعات مربوط به سیستم عامل کاربر دسترسی داشت؟](#چطوری-می‌شه-به-اطلاعات-مربوط-به-سیستم-عامل-کاربر-دسترسی-داشت) | | +|90 | [تفاوت‌های بین رخدادهای document-load و DOMContentLoaded چیا هستن؟](#تفاوتهای-بین-رخدادهای-document-load-و-DOMContentLoaded-چیا-هستن) | | +|91 | [تفاوت‌های بین objectهای native، host و user چیا هستن؟](#تفاوتهای-بین-objectهای-native،-host-و-user-چیا-هستن) | | +|92 | [کدوم ابزار و تکنیک‌ها برای دیباگ کردن برنامه جاواسکریپتی استفاده میشن؟](#کدوم-ابزار-و-تکنیکها-برای-دیباگ-کردن-برنامه-جاواسکریپتی-استفاده-میشن) | | +|93 | [مزایا و معایب استفاده از promiseها به جای callback چیا هستن؟](#مزایا-و-معایب-استفاده-از-promiseها-به-جای-callback-چیا-هستن) | | +|94 | [تفاوت‌های بین attribute و property روی DOM چیا هستن؟](#تفاوتهای-بین-attribute-و-property-روی-DOM-چیا-هستن) | | +|95 | [سیاست same-origin چیه؟](#سیاست-same-origin-چیه) | | +|96 | [هدف استفاده از void 0 چیه؟](#هدف-استفاده-از-void-0-چیه) | | +|97 | [جاواسکریپت یه زبان تفسیری هست یا کامپایلری؟](#جاواسکریپت-یه-زبان-تفسیری-هست-یا-کامپایلری) | | +|98 | [آیا جاواسکریپت یه زبان حساس به بزرگی و کوچکی(case-sensitive) حروف است؟](#آیا-جاواسکریپت-یه-زبان-حساس-به-بزرگی-و-کوچکیcase-sensitive-حروف-است) | | +|99 | [ارتباطی بین Java و JavaScript وجود داره؟](#ارتباطی-بین-Java-و-JavaScript-وجود-داره) | | +|100| [Eventها چی هستن؟](#Eventها-چی-هستن) | | +|101| [کی جاواسکریپت رو ساخته؟](#کی-جاواسکریپت-رو-ساخته) | | +|102| [هدف از متد preventDefault چیه؟](#هدف-از-متد-preventDefault-چیه) | | +|103| [کاربرد متد stopPropagation چیه؟](#کاربرد-متد-stopPropagation-چیه) | | +|104| [مراحلی که موقع استفاده از return false توی یه event-handler رخ میده چیا هستن؟](#مراحلی-که-موقع-استفاده-از-return-false-توی-یه-event-handler-رخ-میده-چیا-هستن) | | +|105| [BOM چیه؟](#BOM-چیه) | | +|106| [موارد استفاده از setTimeout کدوما هستن؟](#موارد-استفاده-از-setTimeout-کدوما-هستن) | | +|107| [موارد استفاده از setInterval کدوما هستن؟](#موارد-استفاده-از-setInterval-کدوما-هستن) | | +|108| [چرا جاواسکریپت رو به عنوان یه زبان تک thread می‌شناسن؟](#چرا-جاواسکریپت-رو-به-عنوان-یه-زبان-تک-thread-میشناسن) | | +|109| [Event-delegation چیه؟](#Event-delegation-چیه) | | +|110| [ECMAScript چیه؟](#ECMAScript-چیه) | | +|111| [JSON چیه؟](#JSON-چیه) | | +|112| [قوانین فرمت JSON کدوما هستن؟](#قوانین-فرمت-JSON-کدوما-هستن) | | +|113| [هدف از متد JSON.stringify چیه؟](#هدف-از-متد-JSON.stringify-چیه) | | +|114| [چطوری می‌تونیم یه رشته(string) JSON رو تجزیه کنیم؟](#چطوری-می‌تونیم-یه-رشتهstring-JSON-رو-تجزیه-کنیم) | | +|115| [چرا به JSON نیاز داریم؟](#چرا-به-JSON-نیاز-داریم) | | +|116| [PWAها چی هستن؟](#PWAها-چی-هستن) | | +|117| [هدف از متد clearTimeout چیه؟](#هدف-از-متد-clearTimeout-چیه) | | +|118| [هدف از متد clearInterval چیه؟](#هدف-از-متد-clearInterval-چیه) | | +|119| [توی جاواسکریپت، چطوری می‌شه به یه صفحه جدید redirect انجام داد؟](#توی-جاواسکریپت،-چطوری-می‌شه-به-یه-صفحه-جدید-redirect-انجام-داد) | | +|120| [چطوری بررسی می‌کنین که یه string شامل یه substring هست یا نه؟](#چطوری-بررسی-می‌کنین-که-یه-string-شامل-یه-substring-هست-یا-نه) | | +|121| [توی جاواسکریپت، چطوری مقدار یه آدرس email رو اعتبارسنجی می‌کنین؟](#توی-جاواسکریپت،-چطوری-مقدار-یه-آدرس-email-رو-اعتبارسنجی-می‌کنین) | | +|122| [چطوری می‌تونیم مقدار آدرس url جاری رو بخونیم؟](#چطوری-می‌تونیم-مقدار-آدرس-url-جاری-رو-بخونیم) | | +|123| [ویژگی‌های مختلف url روی object مربوط به history کدوما هستن؟](#ویژگیهای-مختلف-url-روی-object-مربوط-به-history-کدوما-هستن) | | +|124| [توی جاواسکریپت چطوری می‌تونیم مقدار یه query-string رو بخونیم؟](#توی-جاواسکریپت-چطوری-می‌تونیم-مقدار-یه-query-string-رو-بخونیم) | | +|125| [چطوری می‌تونیم بررسی کنیم که آیا یه پراپرتی روی آبجکت وجود داره یا نه؟](#چطوری-می‌تونیم-بررسی-کنیم-که-آیا-یه-پراپرتی-روی-آبجکت-وجود-داره-یا-نه) | | +|126| [ری روی یه object حلقه میزنی؟](#چطوری-روی-یه-object-حلقه-میزنی) | | +|127| [چطوری تست می‌کنی که یه object خالیه؟](#چطوری-تست-می‌کنی-که-یه-object-خالیه) | | +|128| [arguments object چیه؟](#arguments-object-چیه) | | +|129| [چطوری حرف اول یه رشته رو به حرف بزرگ تبدیل می‌کنی؟](#چطوری-حرف-اول-یه-رشته-رو-به-حرف-بزرگ-تبدیل-می‌کنی) | | +|130| [مزایا و معایب حلقه for چیا هستن؟](#مزایا-و-معایب-حلقه-for-چیا-هستن) | | +|131| [چطوری تاریخ جاری رو توی جاواسکریپت نشون میدی؟](#چطوری-تاریخ-جاری-رو-توی-جاواسکریپت-نشون-میدی) | | +|132| [چطوری دو تا date object رو با هم مقایسه می‌کنی؟](#چطوری-دو-تا-date-object-رو-با-هم-مقایسه-می‌کنی) | | +|133| [چطوری بررسی می‌کنی که یه رشته با یه رشته دیگه شروع می‌شه؟](#چطوری-بررسی-می‌کنی-که-یه-رشته-با-یه-رشته-دیگه-شروع-می‌شه) | | +|134| [چطوری یه رشته رو trim می‌کنی؟](#چطوری-یه-رشته-رو-trim-می‌کنی) | | +|135| [توی جاواسکریپت چطوری می‌تونیم یه زوج مرتب از key یه valueها بسازیم؟](#توی-جاواسکریپت-چطوری-می‌تونیم-یه-زوج-مرتب-از-key-یه-valueها-بسازیم) | | +|136| [آیا عبارت '!--' عملگر خاصی هست؟](#آیا-عبارت-!---عملگر-خاصی-هست) | | +|137| [چطوری می‌تونیم به متغیرهامون مقادیر اولیه بدیم؟](#چطوری-می‌تونیم-به-متغیرهامون-مقادیر-اولیه-بدیم) | | +|138| [چطوری می‌تونیم متن‌های چند خطی درست کنیم؟](#چطوری-می‌تونیم-متنهای-چند-خطی-درست-کنیم) | | +|139| [مدل app-shell چیه؟](#مدل-app-shell-چیه) | | +|140| [چطوری می‌تونیم روی یه تابع property اضافه کنیم؟](#چطوری-می‌تونیم-روی-یه-تابع-property-اضافه-کنیم) | | +|141| [چطوری می‌تونیم تعداد پارامترهای ورودی یه تابع رو به دست بیاریم؟](#چطوری-می‌تونیم-تعداد-پارامترهای-ورودی-یه-تابع-رو-به-دست-بیاریم) | | +|142| [Polyfill چیه؟](#Polyfill-چیه) | | +|143| [عبارات Break و continue چی هستن؟](#عبارات-Break-و-continue-چی-هستن) | | +|144| [توی جاواسکریپت labelها چیکار می‌کنن؟](#توی-جاواسکریپت-labelها-چیکار-میکنن) | | +|145| [مزایای declare کردن متغیرها در اوایل کد چیه؟](#مزایای-declare-کردن-متغیرها-در-اوایل-کد-چیه) | | +|146| [مزایای مقداردهی اولیه متغیرها چیه؟](#مزایای-مقداردهی-اولیه-متغیرها-چیه) | | +|147| [روش توصیه شده برای ایجاد object چیه؟](#روش-توصیه-شده-برای-ایجاد-object-چیه) | | +|148| [چطوری می‌تونیم آرایه‌ JSON تعریف کنیم؟](#چطوری-می‌تونیم-آرایه-JSON-تعریف-کنیم) | | +|149| [چطوری می‌تونیم اعداد تصادفی تولید کنیم؟](#چطوری-می‌تونیم-اعداد-تصادفی-تولید-کنیم) | | +|150| [می‌تونی یه تابع تولید اعداد تصادفی توی یه بازه مشخص بنویسی؟](#میتونی-یه-تابع-تولید-اعداد-تصادفی-توی-یه-بازه-مشخص-بنویسی) | | +|151| [Tree-shaking چیه؟](#Tree-shaking-چیه) | | +|152| [دلایل نیاز به tree-shaking کدوما هستن؟](#دلایل-نیاز-به-tree-shaking-کدوما-هستن) | | +|153| [آیا استفاده از eval توصیه می‌شه؟](#آیا-استفاده-از-eval-توصیه-می‌شه) | | +|154| [Regular-Expression چیه؟](#Regular-Expression-چیه) | | +|155| [متدهای رشته که روی Regular-expression مجاز هستن کدوماست؟](#متدهای-رشته-که-روی-Regular-expression-مجاز-هستن-کدوماست) | | +|156| [توی Regex بخش modifiersها چیکار می‌کنه؟](#توی-Regex-بخش-modifiersها-چیکار-می‌کنه) | | +|157| [پترن‌های regular-expression چیه؟](#پترنهای-regular-expression-چیه) | | +|158| [آبجکت RegExp چیه؟](#آبجکت-RegExp-چیه) | | +|159| [چطوری روی یه رشته دنبال یه پترن RegExp می‌گردی؟](#چطوری-روی-یه-رشته-دنبال-یه-پترن-RegExp-میگردی) | | +|160| [هدف از متد exec چیه؟](#هدف-از-متد-exec-چیه) | | +|161| [چطوری استایل‌های یه المنت HTML رو تغییر میدی؟](#چطوری-استایلهای-یه-المنت-HTML-رو-تغییر-میدی) | | +|162| [نتیجه عبارت 1+2+'3' چی می‌شه؟](#نتیجه-عبارت-1+2+3-چی-می‌شه) | | +|163| [عبارت debugger چیکار می‌کنه؟](#عبارت-debugger-چیکار-می‌کنه) | | +|164| [هدف از breakpointها توی debugging چیه؟](#هدف-از-breakpointها-توی-debugging-چیه) | | +|165| [آیا می‌تونیم از عبارت‌های رزرو شده در تعریف identifierها(اسم متغیر، کلاس و ...) استفاده کنیم؟](#آیا-می‌تونیم-از-عبارتهای-رزرو-شده-در-تعریف-identifierهااسم-متغیر،-کلاس-و--استفاده-کنیم) | | +|166| [چطوری تشخیص بدیم که یه مرورگر mobile هست یا نه؟](#چطوری-تشخیص-بدیم-که-یه-مرورگر-mobile-هست-یا-نه) | | +|167| [چطوری بدون Regex تشخیص بدیم که یه مرورگر mobile هست یا نه؟](#چطوری-بدون-Regex-تشخیص-بدیم-که-یه-مرورگر-mobile-هست-یا-نه) | | +|168| [چطوری طول و عرض یه تصویر رو با جاواسکریپت به دست میاری؟](#چطوری-طول-و-عرض-یه-تصویر-رو-با-جاواسکریپت-به-دست-میاری) | | +|169| [چطوری درخواست‌های synchronous HTTP بزنیم؟](#چطوری-درخواستهای-synchronous-HTTP-بزنیم) | | +|170| [چطوری درخواست‌های asynchronous HTTP بزنیم؟](#چطوری-درخواستهای-asynchronous-HTTP-بزنیم) | | +|171| [چطوری یه تاریخ رو به یه تاریخ در timezone دیگه تبدیل کنیم؟](#چطوری-یه-تاریخ-رو-به-یه-تاریخ-در-timezone-دیگه-تبدیل-کنیم) | | +|172| [چه propertyهایی برای اندازه‌گیزی سایز window به کار میره؟](#چه-propertyهایی-برای-اندازهگیزی-سایز-window-به-کار-میره) | | +|173| [عملگر شرطی سه گانه توی جاواسکریپت چیه؟](#عملگر-شرطی-سه-گانه-توی-جاواسکریپت-چیه) | | +|174| [آیا می‌شه روی عملگر شرطی زنجیره شرط‌ها رو اعمال کرد؟](#آیا-می‌شه-روی-عملگر-شرطی-زنجیره-شرطها-رو-اعمال-کرد) | | +|175| [روش‌های اجرای جاواسکریپت بعد از لود شدن صفحه کدوما هستن؟](#روشهای-اجرای-جاواسکریپت-بعد-از-لود-شدن-صفحه-کدوما-هستن) | | +|176| [تفاوت‌های بین proto و prototype کدوما هستن؟](#تفاوتهای-بین-proto-و-prototype-کدوما-هستن) | | +|177| [میتونی یه مثال از زمانی که واقعا به سمیکولون( ; ) نیاز هست بزنی؟](#میتونی-یه-مثال-از-زمانی-که-واقعا-به-سمیکولون-نیاز-هست-بزنی) | | +|178| [متد freeze چیکار می‌کنه؟](#متد-freeze-چیکار-می‌کنه) | | +|179| [هدف از متد freeze چیه؟](#هدف-از-متد-freeze-چیه) | | +|180| [چرا به متد freeze نیاز داریم؟](#چرا-به-متد-freeze-نیاز-داریم) | | +|181| [چطوری می‌تونیم زبان ترجیحی یه مرورگر رو تشخیص بدیم؟](#چطوری-می‌تونیم-زبان-ترجیحی-یه-مرورگر-رو-تشخیص-بدیم) | | +|182| [چطوری می‌تونیم حرف اول همه کلمات یه رشته رو به حرف بزرگ تبدیل کنیم؟](#چطوری-می‌تونیم-حرف-اول-همه-کلمات-یه-رشته-رو-به-حرف-بزرگ-تبدیل-کنیم) | | +|183| [چطوری می‌شه تشخیص داد که جاواسکریپت یه صفحه وب غیرفعال شده؟](#چطوری-می‌شه-تشخیص-داد-که-جاواسکریپت-یه-صفحه-وب-غیرفعال-شده) | | +|184| [عملگرهای پشتیبانی شده توسط جاواسکریپت کدوما هستن؟](#عملگرهای-پشتیبانی-شده-توسط-جاواسکریپت-کدوما-هستن) | | +|185| [پارامتر rest چیکار می‌کنه؟](#پارامتر-rest-چیکار-می‌کنه) | | +|186| [اگه پارامتر rest رو به عنوان آخرین پارامتر استفاده نکنیم چی می‌شه؟](#اگه-پارامتر-rest-رو-به-عنوان-آخرین-پارامتر-استفاده-نکنیم-چی-می‌شه) | | +|187| [عملگرهای منطقی باینری توی جاواسکریپت کدوما هستن؟](#عملگرهای-منطقی-باینری-توی-جاواسکریپت-کدوما-هستن) | | +|188| [عملگر spread چیکار می‌کنه؟](#عملگر-spread-چیکار-می‌کنه) | | +|189| [چطوری تشخیص میدی که یه آبجکت freeze شده یا نه؟](#چطوری-تشخیص-میدی-که-یه-آبجکت-freeze-شده-یا-نه) | | +|190| [چطوری بررسی کنیم که دو تا مقدار(شامل آبجکت) با هم برابرن یا نه؟](#چطوری-بررسی-کنیم-که-دو-تا-مقدارشامل-آبجکت-با-هم-برابرن-یا-نه) | | +|191| [هدف از متد is روی object چیه؟](#هدف-از-متد-is-روی-object-چیه) | | +|192| [چطوری propertyهای یه object رو به یه object دیگه کپی می‌کنی؟](#چطوری-propertyهای-یه-object-رو-به-یه-object-دیگه-کپی-می‌کنی) | | +|193| [کاربردهای ممتد assign چیه؟](#کاربردهای-ممتد-assign-چیه) | | +|194| [آبجکت proxy چیه؟](#آبجکت-proxy-چیه) | | +|195| [هدف از متد seal چیه؟](#هدف-از-متد-seal-چیه) | | +|196| [کاربردهای متد seal چیه؟](#کاربردهای-متد-seal-چیه) | | +|197| [تفاوت‌های بین متدهای freeze و seal چیا هست؟](#تفاوتهای-بین-متدهای-freeze-و-seal-چیا-هست) | | +|198| [چطوری تشخیص میدی که یه آبجکت seal شده یا نه؟](#چطوری-تشخیص-میدی-که-یه-آبجکت-seal-شده-یا-نه) | | +|199| [چطوری کلید و مقدارهای enumerable رو به دست میاری؟](#چطوری-کلید-و-مقدارهای-enumerable-رو-به-دست-میاری) | | +|200| [تفاوت‌های بین متدهای Object.values و Object.entries چیا هست؟](#تفاوتهای-بین-متدهای-Objectvalues-و-Objectentries-چیا-هست) | | +|201| [چطوری لیست کلیدهای یه object رو بدست میاری؟](#چطوری-لیست-کلیدهای-یه-object-رو-بدست-میاری) | | +|202| [چطوری یه object با prototype درست می‌کنی؟](#چطوری-یه-object-با-prototype-درست-می‌کنی) | | +|203| [WeakSet چیه؟](#WeakSet-چیه) | | +|204| [تفاوت‌های بین WeakSet و Set کدوما هستن؟](#تفاوتهای-بین-WeakSet-و-Set-کدوما-هستن) | | +|205| [لیست متدهایی که رو WeakSet قابل استفاده هستن رو می‌تونی بگی؟](#لیست-متدهایی-که-رو-WeakSet-قابل-استفاده-هستن-رو-میتونی-بگی) | | +|206| [WeakMap چیه؟](#WeakMap-چیه) | | +|207| [تفاوت‌های بین WeakMap و Map کدوما هستن؟](#تفاوتهای-بین-WeakMap-و-Map-کدوما-هستن) | | +|208| [لیست متدهایی که رو WeakMap قابل استفاده هستن رو می‌تونی بگی؟](#لیست-متدهایی-که-رو-WeakMap-قابل-استفاده-هستن-رو-میتونی-بگی) | | +|209| [هدف از متد uneval چیه؟](#هدف-از-متد-uneval-چیه) | | +|210| [چطوری یه URL رو encode می‌کنی؟](#چطوری-یه-URL-رو-encode-می‌کنی) | | +|211| [چطوری یه URL رو decode می‌کنی؟](#چطوری-یه-URL-رو-decode-می‌کنی) | | +|212| [چطوری محتوای یه صفحه رو پرینت می‌گیری؟](#چطوری-محتوای-یه-صفحه-رو-پرینت-می‌گیری) | | +|213| [تفاوت‌های بین uneval و eval چیا هستن؟](#تفاوتهای-بین-uneval-و-eval-چیا-هستن) | | +|214| [تابع anonymous چیه؟](#تابع-anonymous-چیه) | | +|215| [تفاوت تقدم بین متغیرهای local و global چطوریه؟](#تفاوت-تقدم-بین-متغیرهای-local-و-global-چطوریه) | | +|216| [accessorهای جاواسکریپت چیکار می‌کنن؟](#accessorهای-جاواسکریپت-چیکار-میکنن) | | +|217| [چطوری روی constructor یه Object یه مقدار تعریف می‌کنی؟](#چطوری-روی-constructor-یه-Object-یه-مقدار-تعریف-می‌کنی) | | +|218| [تفاوت‌های بین get و defineProperty چیا هست؟](#تفاوتهای-بین-get-و-defineProperty-چیا-هست) | | +|219| [مزایای استفاده از Getter و Setter چیه؟](#مزایای-استفاده-از-Getter-و-Setter-چیه) | | +|220| [می‌تونیم getter و setter رو با استفاده از متد defineProperty تعریف کنیم؟](#می‌تونیم-getter-و-setter-رو-با-استفاده-از-متد-defineProperty-تعریف-کنیم) | | +|221| [هدف استفاده از switch-case چیه؟](#هدف-استفاده-از-switch-case-چیه) | | +|222| [چه قواعدی برای استفاده از swtich-case باید رعایت بشه؟](#چه-قواعدی-برای-استفاده-از-swtich-case-باید-رعایت-بشه) | | +|223| [نوع داده‌های primitive کدوما هستن؟](#نوع-دادههای-primitive-کدوما-هستن) | | +|224| [روش‌های مختلف دسترسی به propertyهای object کدوما هستن؟](#روشهای-مختلف-دسترسی-به-propertyهای-object-کدوما-هستن) | | +|225| [قوانین پارامترهای توابع کدوما هستن؟](#قوانین-پارامترهای-توابع-کدوما-هستن) | | +|226| [آبجکت error چیه؟](#آبجکت-error-چیه) | | +|227| [چه موقعی خطای syntax دریافت می‌کنیم؟](#چه-موقعی-خطای-syntax-دریافت-می‌کنیم) | | +|228| [عنوان خطاهای مختلف که روی error-object برمیگردن کدوما هستن؟](#عنوان-خطاهای-مختلف-که-روی-error-object-برمیگردن-کدوما-هستن) | | +|229| [عبارات مختلف که در هنگام مدیریت error استفاده میشن کدوما هستن؟](#عبارات-مختلف-که-در-هنگام-مدیریت-error-استفاده-میشن-کدوما-هستن) | | +|230| [دو نوع مختلف حلفه‌ها در جاواسکریپت کدوما هستن؟](#دو-نوع-مختلف-حلفهها-در-جاواسکریپت-کدوما-هستن) | | +|231| [nodejs چیه؟](#nodejs-چیه) | | +|232| [آبجکت Intl چیه؟](#آبجکت-Intl-چیه) | | +|233| [چطوری تاریخ و زمان رو بر اساس زبان جاری سیستم کاربر نمایش بدیم؟](#چطوری-تاریخ-و-زمان-رو-بر-اساس-زبان-جاری-سیستم-کاربر-نمایش-بدیم) | | +|234| [Iterator چیه؟](#Iterator-چیه) | | +|235| [حلفه‌های synchronous(همزمان) چطوری کار می‌کنن؟](#حلفههای-synchronousهمزمان-چطوری-کار-میکنن) | | +|236| [Event-loop چیه؟](#Event-loop-چیه) | | +|237| [Call-stack چیه؟](#Call-stack-چیه) | | +|238| [Event-queue چیه؟](#Event-queue-چیه) | | +|239| [Decorator چیه؟](#Decorator-چیه) | | +|240| [مقادیر موجود روی آبجکت Intl کدوما هستن؟](#مقادیر-موجود-روی-آبجکت-Intl-کدوما-هستن) | | +|241| [عملگر Unary چیه؟](#عملگر-Unary-چیه) | | +|242| [چطوری المنت‌های موجود تو یه آرایه رو مرتب می‌کنی؟](#چطوری-المنتهای-موجود-تو-یه-آرایه-رو-مرتب-می‌کنی) | | +|243| [هدف از تابع مرتب‌سازی موقع استفاده از متد sort چیه؟](#هدف-از-تابع-مرتبسازی-موقع-استفاده-از-متد-sort-چیه) | | +|244| [چطوری آیتم‌های یه آرایه رو معکوس مرتب کنیم؟](#چطوری-آیتمهای-یه-آرایه-رو-معکوس-مرتب-کنیم) | | +|245| [چطوری حداقل و حداکثر مقدار یه آرایه رو بدست بیاریم؟](#چطوری-حداقل-و-حداکثر-مقدار-یه-آرایه-رو-بدست-بیاریم) | | +|246| [چطوری حداقل و حداکثر مقدار یه آرایه رو بدون استفاده از متدهای Math بدست بیاریم؟](#چطوری-حداقل-و-حداکثر-مقدار-یه-آرایه-رو-بدون-استفاده-از-متدهای-Math-بدست-بیاریم) | | +|247| [عبارت خالی چیه و هدف از استفاده ازش چیه؟](#عبارت-خالی-چیه-و-هدف-از-استفاده-ازش-چیه) | | +|248| [چطوری metadata یه ماژول رو بدست میاری؟ meta data of a module](#چطوری-metadata-یه-ماژول-رو-بدست-میاری-meta-data-of-a-module) | | +|249| [عملگر comma چیه و چیکار می‌کنه؟](#عملگر-comma-چیه-و-چیکار-می‌کنه) | | +|250| [مزایای استفاده از عملگر comma چیه؟](#مزایای-استفاده-از-عملگر-comma-چیه) | | +|251| [Typescript چیه؟](#Typescript-چیه) | | +|252| [تفاوت‌های بین javascript و typescript کدوما هستن؟](#تفاوتهای-بین-javascript-و-typescript-کدوما-هستن) | | +|253| [مزایای typescript نسبت به javascript چیاست؟](#مزایای-typescript-نسبت-به-javascript-چیاست) | | +|254| [object-initializer چیه؟](#object-initializer-چیه) | | +|255| [متد constructor چیه؟](#متد-constructor-چیه) | | +|256| [اگه متد constructor رو بیش از یه بار توی کلاس بنویسیم چی می‌شه؟](#اگه-متد-constructor-رو-بیش-از-یه-بار-توی-کلاس-بنویسیم-چی-می‌شه) | | +|257| [چطوری متد constructor کلاس والد رو صدا بزنیم؟](#چطوری-متد-constructor-کلاس-والد-رو-صدا-بزنیم) | | +|258| [چطوری prototype یه object رو به دست میاری؟](#چطوری-prototype-یه-object-رو-به-دست-میاری) | | +|259| [اگه به متد getPrototype رشته پاس بدیم چی می‌شه؟](#اگه-به-متد-getPrototype-رشته-پاس-بدیم-چی-می‌شه) | | +|260| [چطوری prototype یه object روی یه object دیگه ست کنیم؟](#چطوری-prototype-یه-object-روی-یه-object-دیگه-ست-کنیم) | | +|261| [چطوری بررسی می‌کنی که یه object قابل extend هست یا نه؟](#چطوری-بررسی-می‌کنی-که-یه-object-قابل-extend-هست-یا-نه) | | +|262| [چطوری جلوی extend یه object رو بگیریم؟](#چطوری-جلوی-extend-یه-object-رو-بگیریم) | | +|263| [روش‌های مختلف برای تبدیل یه object به object غیرقابل extend چیه؟](#روشهای-مختلف-برای-تبدیل-یه-object-به-object-غیرقابل-extend-چیه) | | +|264| [چطوری propertyهای متعددی رو روی یه object تعریف می‌کنی؟](#چطوری-propertyهای-متعددی-رو-روی-یه-object-تعریف-می‌کنی) | | +|265| [منظور از MEAN توی جاواسکریپت چیه؟ javascript](#منظور-از-MEAN-توی-جاواسکریپت-چیه-javascript) | | +|266| [Obfuscation توی جاواسکریپت چیه و چیکار می‌کنه؟ javascript](#Obfuscation-توی-جاواسکریپت-چیه-و-چیکار-می‌کنه-javascript) | | +|267| [چه نیازی به Obfuscate کردن داریم؟](#چه-نیازی-به-Obfuscate-کردن-داریم) | | +|268| [Minification چیه؟](#Minification-چیه) | | +|269| [مزایای minification یا کم حجم‌سازی چیه؟](#مزایای-minification-یا-کم-حجمسازی-چیه) | | +|270| [تفاوت‌های بین Obfuscation و Encryption چیه؟](#تفاوتهای-بین-Obfuscation-و-Encryption-چیه) | | +|271| [ابزارهای مختلف برای minification کدوما هستن؟](#ابزارهای-مختلف-برای-minification-کدوما-هستن) | | +|272| [چطوری اعتبارسنجی فرم رو با javascript انجام میدی؟](#چطوری-اعتبارسنجی-فرم-رو-با-javascript-انجام-میدی) | | +|273| [چطوری اعتبارسنجی فرم رو بدون javascript انجام میدی؟](#چطوری-اعتبارسنجی-فرم-رو-بدون-javascript-انجام-میدی) | | +|274| [متدهای موجود روی DOM برای اعتبارسنجی کدوما هستن؟](#متدهای-موجود-روی-DOM-برای-اعتبارسنجی-کدوما-هستن) | | +|275| [مقادیر موجود روی DOM برای اعتبارسنجی کدوما هستن؟](#مقادیر-موجود-روی-DOM-برای-اعتبارسنجی-کدوما-هستن) | | +|276| [مقادیر موجود روی input برای اعتبارسنجی کدوما هستن؟](#مقادیر-موجود-روی-input-برای-اعتبارسنجی-کدوما-هستن) | | +|277| [یه مثال از استفاده ویژگی rangeOverflow می‌تونی بزنی؟](#یه-مثال-از-استفاده-ویژگی-rangeOverflow-میتونی-بزنی) | | +|278| [جاواسکریپت قابلیت استفاده از enum رو پیش‌فرض توی خودش داره؟](#جاواسکریپت-قابلیت-استفاده-از-enum-رو-پیشفرض-توی-خودش-داره) | | +|279| [enum چیه؟](#enum-چیه) | | +|280| [چطوری همه propertyهای یه object رو به دست بیاریم؟](#چطوری-همه-propertyهای-یه-object-رو-به-دست-بیاریم) | | +|281| [چطوری get property descriptors of an object](#چطوری-get-property-descriptors-of-an-object) | | +|282| [گزینه‌هایی که موقع تعریف ویژگی object با descriptor داریم کدوما هستن؟](#گزینههایی-که-موقع-تعریف-ویژگی-object-با-descriptor-داریم-کدوما-هستن) | | +|283| [چطوری کلاس‌ها رو extend می‌کنی؟](#چطوری-کلاسها-رو-extend-می‌کنی) | | +|284| [چطوری آدرس صفحه رو بدون رفرش صفحه عوض کنیم؟](#چطوری-آدرس-صفحه-رو-بدون-رفرش-صفحه-عوض-کنیم) | | +|285| [چطوری بررسی می‌کنی که یه آرایه یه مقدار مشخص رو داره یا نه؟](#چطوری-بررسی-می‌کنی-که-یه-آرایه-یه-مقدار-مشخص-رو-داره-یا-نه) | | +|286| [چطوری آرایه‌های scalar رو با هم مقایسه می‌کنی؟](#چطوری-آرایههای-scalar-رو-با-هم-مقایسه-می‌کنی) | | +|287| [چطوری می‌شه پارامترهای صفحه رو از متد GET گرفت؟](#چطوری-می‌شه-پارامترهای-صفحه-رو-از-متد-GET-گرفت) | | +|288| [چطوری اعداد رو می‌شه سه رقم سه رقم جدا کرد؟](#چطوری-اعداد-رو-می‌شه-سه-رقم-سه-رقم-جدا-کرد) | | +|289| [تفاوت‌ بین java و javascript چیه؟](#تفاوت-بین-java-و-javascript-چیه) | | +|290| [آیا جاواسکریپت namespace رو پشتیبانی می‌کنه؟](#آیا-جاواسکریپت-namespace-رو-پشتیبانی-می‌کنه) | | +|291| [چطوری namespace تعریف می‌کنی؟](#چطوری-namespace-تعریف-می‌کنی) | | +|292| [چطوری می‌تونیم تکه کد جاواسکریپت داخل یه iframe رو از صفحه والد صدا بزنیم؟](#چطوری-می‌تونیم-تکه-کد-جاواسکریپت-داخل-یه-iframe-رو-از-صفحه-والد-صدا-بزنیم) | | +|293| [چطوری می‌شه اختلاف timezone رو از آبجکت date بگیریم؟](#چطوری-می‌شه-اختلاف-timezone-رو-از-آبجکت-date-بگیریم) | | +|294| [چطوری فایل‌های CSS و JS رو به شکل داینامیک بارگذاری کنیم؟](#چطوری-فایلهای-CSS-و-JS-رو-به-شکل-داینامیک-بارگذاری-کنیم) | | +|295| [روش‌های مختلف برای پیدا کردن elementها توی DOM کدوما هستن؟](#روشهای-مختلف-برای-پیدا-کردن-elementها-توی-DOM-کدوما-هستن) | | +|296| [jQuery چیه؟](#jQuery-چیه) | | +|297| [موتور V8 جاواسکریپت چیه؟](#موتور-V8-جاواسکریپت-چیه) | | +|298| [چرا ما جاواسکریپت رو به عنوان یه زبان داینامیک می‌شناسیم؟](#چرا-ما-جاواسکریپت-رو-به-عنوان-یه-زبان-داینامیک-میشناسیم) | | +|299| [عملگر void چیکار می‌کنه؟](#عملگر-void-چیکار-می‌کنه) | | +|300| [چطوری می‌شه نمایشگر موس صفحه رو به درحال لود تغییر داد؟](#چطوری-می‌شه-نمایشگر-موس-صفحه-رو-به-درحال-لود-تغییر-داد) | | +|301| [چطوری می‌شه یه حلقه بی‌نهایت درست کرد؟](#چطوری-می‌شه-یه-حلقه-بینهایت-درست-کرد) | | +|302| [چرا باید در استفاده از عبارت with تجدیدنظر کرد؟](#چرا-باید-در-استفاده-از-عبارت-with-تجدیدنظر-کرد) | | +|303| [خروجی این حلقه‌ها چی می‌شه؟](#خروجی-این-حلقهها-چی-می‌شه) | | +|304| [می‌تونی یه سری از ویژگی‌های ES6 رو اسم ببری؟](#میتونی-یه-سری-از-ویژگیهای-ES6-رو-اسم-ببری) | | +|305| [ES6 چیه؟](#ES6-چیه) | | +|306| [آیا می‌تونیم متغیرهای تعریف شده با let و const رو مجددا declare کنیم؟](#آیا-می‌تونیم-متغیرهای-تعریف-شده-با-let-و-const-رو-مجددا-declare-کنیم) | | +|307| [آیا استفاده از const برای تعریف متغیر اونا رو immutable می‌کنه؟](#آیا-استفاده-از-const-برای-تعریف-متغیر-اونا-رو-immutable-می‌کنه) | | +|308| [parameterهای پیش‌فرض چی هستن؟](#parameterهای-پیشفرض-چی-هستن) | | +|309| [template-literalها چی هستن؟](#template-literalها-چی-هستن) | | +|310| [چطوری رشته‌های چند خطی رو توی template-literalها می‌نویسیم؟](#چطوری-رشتههای-چند-خطی-رو-توی-template-literalها-مینویسیم) | | +|311| [template-literal‌های تودرتو چی هستن؟](#template-literalهای-تودرتو-چی-هستن) | | +|312| [tagged-templateها چی هستن؟](#tagged-templateها-چی-هستن) | | +|313| [رشته‌های خام چی هستن؟](#رشتههای-خام-چی-هستن) | | +|314| [assign کردن با destructuring چیه و چطوری انجام می‌شه؟](#assign-کردن-با-destructuring-چیه-و-چطوری-انجام-می‌شه) | | +|315| [موقع assign کردن با destructuring چطوری می‌شه مقدار اولیه تعریف کرد؟](#موقع-assign-کردن-با-destructuring-چطوری-می‌شه-مقدار-اولیه-تعریف-کرد) | | +|316| [چطوری می‌تونیم مقدار یه آرایه رو با استفاده از destructuring-assignment تعویض کنیم؟](#چطوری-می‌تونیم-مقدار-یه-آرایه-رو-با-استفاده-از-destructuring-assignment-تعویض-کنیم) | | +|317| [Enhanced-object-literalها چی هستن؟](#Enhanced-object-literalها-چی-هستن) | | +|318| [importهای داینامیک چی هستن؟](#importهای-داینامیک-چی-هستن) | | +|319| [کاربرد importهای داینامیک چیه؟](#کاربرد-importهای-داینامیک-چیه) | | +|320| [آرایه‌های نوع‌دار(typed-arrays) چیه؟](#آرایههای-نوعدارtyped-arrays-چیه) | | +|321| [مزایای لودر ماژول‌ها چیه؟](#مزایای-لودر-ماژولها-چیه) | | +|322| [collation چیه؟](#collation-چیه) | | +|323| [عبارت for...of چیه؟](#عبارت-forof-چیه) | | +|324| [خروجی عملگر spread روی آرایه زیر چیه؟](#خروجی-عملگر-spread-روی-آرایه-زیر-چیه) | | +|325| [آیا PostMessage امنه؟](#آیا-PostMessage-امنه) | | +|326| [مشکلات استفاده از postmessage با origin روی wildcard چیه؟](#مشکلات-استفاده-از-postmessage-با-origin-روی-wildcard-چیه) | | +|327| [چطوری از دریافت postMessageهای ناخواسته و ناامن از طرف هکرها جلوگیری کنیم؟](#چطوری-از-دریافت-postMessageهای-ناخواسته-و-ناامن-از-طرف-هکرها-جلوگیری-کنیم) | | +|328| [می‌تونیم کلا postMessageها رو غیرفعال کنیم؟](#می‌تونیم-کلا-postMessageها-رو-غیرفعال-کنیم) | | +|329| [آیا postMessageها به صورت synchronous و همزمان کار می‌کنن؟](#آیا-postMessageها-به-صورت-synchronous-و-همزمان-کار-میکنن) | | +|330| [پارادیم زبان جاواسکریپت چیه؟](#پارادیم-زبان-جاواسکریپت-چیه) | | +|331| [تفاوت‌های بین جاواسکریپت داخلی و خارجی چیه؟](#تفاوتهای-بین-جاواسکریپت-داخلی-و-خارجی-چیه) | | +|332| [آیا جاواسکریپت سریعتر از اسکریپت‌های سمت سرور است؟](#آیا-جاواسکریپت-سریعتر-از-اسکریپتهای-سمت-سرور-است) | | +|333| [چطوری وضعیت چک بودن یه checkbox رو بدست بیاریم؟](#چطوری-وضعیت-چک-بودن-یه-checkbox-رو-بدست-بیاریم) | | +|334| [هدف از عملگر double-tilde چیه؟](#هدف-از-عملگر-double-tilde-چیه) | | +|335| [چطوری یه کاراکتر رو به کد ASCII تبدیل کنیم؟](#چطوری-یه-کاراکتر-رو-به-کد-ASCII-تبدیل-کنیم) | | +|336| [ArrayBuffer چیه؟](#ArrayBuffer-چیه) | | +|337| [خروجی کد زیر چی خواهد بود؟](#خروجی-کد-زیر-چی-خواهد-بود) | | +|338| [هدف از Error-object چیه؟](#هدف-از-Error-object-چیه) | | +|339| [هدف از EvalError-object چیه؟](#هدف-از-EvalError-object-چیه) | | +|340| [خطاهایی که در حالت strict-mode رخ میدن ولی در غیر اون وجود ندارن کدوما هستن؟](#خطاهایی-که-در-حالت-strict-mode-رخ-میدن-ولی-در-غیر-اون-وجود-ندارن-کدوما-هستن) | | +|341| [آیا همه objectها دارای prototype هستن؟](#آیا-همه-objectها-دارای-prototype-هستن) | | +|342| [تفاوت‌های بین parameter و argument چیه؟](#تفاوتهای-بین-parameter-و-argument-چیه) | | +|343| [هدف از متد some روی آرایه‌ها چیه؟](#هدف-از-متد-some-روی-آرایهها-چیه) | | +|344| [چطوری دو یا تعداد بیشتری از آرایه‌ها رو با هم ترکیب کنیم؟](#چطوری-دو-یا-تعداد-بیشتری-از-آرایهها-رو-با-هم-ترکیب-کنیم) | | +|345| [تفاوت‌های بین Shallow و Deep کپی چیه؟](#تفاوتهای-بین-Shallow-و-Deep-کپی-چیه) | | +|346| [چطوری می‌تونیم به یه تعداد مشخص از یه رشته کپی کنیم؟](#چطوری-می‌تونیم-به-یه-تعداد-مشخص-از-یه-رشته-کپی-کنیم) | | +|347| [چطوری همه stringهای match شده با یه regular-expression رو برگردونیم؟](#چطوری-همه-stringهای-match-شده-با-یه-regular-expression-رو-برگردونیم) | | +|348| [چطوری یه رشته رو از اول یا از آخر trim کنیم؟](#چطوری-یه-رشته-رو-از-اول-یا-از-آخر-trim-کنیم) | | +|349| [خروجی کنسول زیر با عملگر unary چی می‌شه؟](#خروجی-کنسول-زیر-با-عملگر-unary-چی-می‌شه) | | +|350| [آیا جاواسکریپت از mixinها استفاده می‌کنه؟](#آیا-جاواسکریپت-از-mixinها-استفاده-می‌کنه) | | +|351| [تابع thunk چیه و چیکار می‌کنه؟](#تابع-thunk-چیه-و-چیکار-می‌کنه) | | +|352| [thunkهای asynchronous چیکار می‌کنن؟](#thunkهای-asynchronous-چیکار-میکنن) | | +|353| [خروجی فراخوانی‌های توابع زیر چی می‌شه؟](#خروجی-فراخوانیهای-توابع-زیر-چی-می‌شه) | | +|354| [چطوری همه خطوط جدید رو از یه رشته حذف کرد؟](#چطوری-همه-خطوط-جدید-رو-از-یه-رشته-حذف-کرد) | | +|355| [تفاوت‌ بین reflow و repaint چیه؟](#تفاوت-بین-reflow-و-repaint-چیه) | | +|356| [اگه قبل از یه آرایه عملگر نفی «!» بزاریم چی می‌شه؟](#اگه-قبل-از-یه-آرایه-عملگر-نفی-«!»-بزاریم-چی-می‌شه) | | +|357| [اگه دو تا آرایه رو با هم جمع ببندیم چی می‌شه؟](#اگه-دو-تا-آرایه-رو-با-هم-جمع-ببندیم-چی-می‌شه) | | +|358| [اگه عملگر جمع «+» روی قبل از مقادیر falsy قرار بدیم چی می‌شه؟](#اگه-عملگر-جمع-«+»-روی-قبل-از-مقادیر-falsy-قرار-بدیم-چی-می‌شه) || +|359| [چطوری با استفاده از آرایه‌ها و عملگرهای منطقی می‌تونیم رشته self رو تولید کنیم؟](#چطوری-با-استفاده-از-آرایهها-و-عملگرهای-منطقی-می‌تونیم-رشته-self-رو-تولید-کنیم) | | +|360| [چطوری می‌تونیم مقادیر falsy رو از آرایه حذف کنیم؟](#چطوری-می‌تونیم-مقادیر-falsy-رو-از-آرایه-حذف-کنیم) | | +|361| [چطوری مقادیر تکراری رو از یه آرایه حذف کنیم؟](#چطوری-مقادیر-تکراری-رو-از-یه-آرایه-حذف-کنیم) | | +|362| [aliaseهای همزمان با destructuring چطوری کار می‌کنن؟](#aliaseهای-همزمان-با-destructuring-چطوری-کار-میکنن) | | +|363| [چطوری آیتم‌های یه آرایه رو بدون استفاده از متد map پیمایش کنیم؟](#چطوری-آیتمهای-یه-آرایه-رو-بدون-استفاده-از-متد-map-پیمایش-کنیم) | | +|364| [چطوری یه آرایه رو خالی کنیم؟](#چطوری-یه-آرایه-رو-خالی-کنیم) | | +|365| [چطوری اعداد رو با تعداد رقم اعشار مشخص رند می‌کنی؟](#چطوری-اعداد-رو-با-تعداد-رقم-اعشار-مشخص-رند-می‌کنی) | | +|366| [ساده‌ترین روش برای تبدیل آرایه به object چیه؟](#سادهترین-روش-برای-تبدیل-آرایه-به-object-چیه) | | +|367| [چطوری یه آرایه با یه سری داده درست کنیم؟](#چطوری-یه-آرایه-با-یه-سری-داده-درست-کنیم) | | +|368| [متغیرهای موجود روی آبجکت console کدوما هستن؟](#متغیرهای-موجود-روی-آبجکت-console-کدوما-هستن) | | +|369| [می‌شه پیام‌های کنسول رو استایل‌دهی کرد؟](#می‌شه-پیامهای-کنسول-رو-استایلدهی-کرد) | | +|370| [هدف از متد dir روی آبجکت console چیه؟](#هدف-از-متد-dir-روی-آبجکت-console-چیه) | | +|371| [آیا می‌شه المنت‌های HTML رو توی console دیباگ کرد؟](#آیا-می‌شه-المنتهای-HTML-رو-توی-console-دیباگ-کرد) | | +|372| [چطوری می‌شه داده‌ها رو به شکل جدولی توی console نمایش بدیم؟](#چطوری-می‌شه-دادهها-رو-به-شکل-جدولی-توی-console-نمایش-بدیم) | | +|373| [چطوری می‌شه بررسی کرد که یه پارامتر Number هست یا نه؟](#چطوری-می‌شه-بررسی-کرد-که-یه-پارامتر-Number-هست-یا-نه) | | +|374| [چطوری یه متن رو می‌تونیم به clipboard کپی کنیم؟](#چطوری-یه-متن-رو-می‌تونیم-به-clipboard-کپی-کنیم) | | +|375| [چطوری می‌شه timestamp رو بدست آورد؟](#چطوری-می‌شه-timestamp-رو-بدست-آورد) | | +|376| [چطوری یه آرایه چندسطحی رو تک سطحی کنیم؟](#چطوری-یه-آرایه-چندسطحی-رو-تک-سطحی-کنیم) | | +|377| [ساده‌ترین روش برای بررسی چندشرطی چیه؟](#سادهترین-روش-برای-بررسی-چندشرطی-چیه) | | +|378| [چطوری کلیک روی دکمه برگشت مرورگر رو متوجه بشیم؟](#چطوری-کلیک-روی-دکمه-برگشت-مرورگر-رو-متوجه-بشیم) | | +|379| [چطوری می‌تونیم کلیک راست رو غیرفعال کنیم؟](#چطوری-می‌تونیم-کلیک-راست-رو-غیرفعال-کنیم) | | +|380| [object-wrapperها چی هستن؟](#object-wrapperها-چی-هستن) | | +|381| [AJAX چیه؟](#AJAX-چیه) | | +|382| [روش‌های مختلف مدیریت یه کد Asynchronous چیه؟](#روشهای-مختلف-مدیریت-یه-کد-Asynchronous-چیه) | | +|383| [چطوری یه درخواست fetch رو کنسل کنیم؟](#چطوری-یه-درخواست-fetch-رو-کنسل-کنیم) | | +|384| [Speech-API چیه؟](#Speech-API-چیه) | | +|385| [حداقل timeout توی throttling چقدره؟](#حداقل-timeout-توی-throttling-چقدره) | | +|386| [چطوری می‌شه یه timeout صفر توی مرورگر اجرا کرد؟](#چطوری-می‌شه-یه-timeout-صفر-توی-مرورگر-اجرا-کرد) | | +|387| [taskها توی event-loop چی هستن؟](#taskها-توی-event-loop-چی-هستن) | | +|388| [microtaskها چی هستن؟](#microtaskها-چی-هستن) | | +|389| [event-loopهای مختلف کدوما هستن؟](#event-loopهای-مختلف-کدوما-هستن) | | +|390| [هدف از queueMicrotask چیه؟](#هدف-از-queueMicrotask-چیه) | | +|391| [چطوری می‌شه از کتابخونه‌های جاواسکریپت توی فایل typescript استفاده کرد؟](#چطوری-می‌شه-از-کتابخونههای-جاواسکریپت-توی-فایل-typescript-استفاده-کرد) | | +|392| [تفاوت‌های بین promiseها و observableها کدوما هستن؟](#تفاوتهای-بین-promiseها-و-observableها-کدوما-هستن) | | +|393| [heap چیه؟](#heap-چیه) | | +|394| [event-table چیه؟](#event-table-چیه) | | +|395| [صف microTask چیه؟](#صف-microTask-چیه) | | +|396| [تفاوت بین shim و polyfill چیه؟](#تفاوت-بین-shim-و-polyfill-چیه) | | +|397| [چطوری متوجه primitive یا غیر primitive بودن یه نوع داده میشیم؟](#چطوری-متوجه-primitive-یا-غیر-primitive-بودن-یه-نوع-داده-میشیم) | | +|398| [babel چیه؟](#babel-چیه) | | +|399| [آیا Node.js به شکل کامل تک thread کار می‌کنه؟](#آیا-Nodejs-به-شکل-کامل-تک-thread-کار-می‌کنه) | | +|400| [کاربردهای مرسوم observableها کدوما هستن؟](#کاربردهای-مرسوم-observableها-کدوما-هستن) | | +|401| [RxJS چیه؟](#RxJS-چیه) | | +|402| [تفاوت بین Function-constructor و function-declaration چیه؟](#تفاوت-بین-Function-constructor-و-function-declaration-چیه) | | +|403| [شرط Short-circuit یا اتصال کوتاه چیه؟](#شرط-Short-circuit-یا-اتصال-کوتاه-چیه) | | +|404| [ساده‌ترین روش برای تغییر سایز یه آرایه چیه؟](#سادهترین-روش-برای-تغییر-سایز-یه-آرایه-چیه) | | +|405| [observable چیه؟](#observable-چیه) | | +|406| [تفاوت‌های بین توابع و کلاس‌ها چیه؟](#تفاوتهای-بین-توابع-و-کلاسها-چیه) | | +|407| [تابع async چیه؟](#تابع-async-چیه) | | +|408| [چطوری خطاهای ایجاد شده هنگام استفاده از promiseها رو کنترل کنیم؟](#چطوری-خطاهای-ایجاد-شده-هنگام-استفاده-از-promiseها-رو-کنترل-کنیم) | | +|409| [Deno چیه؟](#Deno-چیه) | | +|410| [توی جاواسکریپت چطوری یه object قابل پیمایش درست کنیم؟](#توی-جاواسکریپت-چطوری-یه-object-قابل-پیمایش-درست-کنیم) | | +|411| [روش مناسب برای فراخوانی توابع بازگشتی چیه؟](#روش-مناسب-برای-فراخوانی-توابع-بازگشتی-چیه) | | +|412| [چطوری بررسی کنیم که یه آبجکت promise هست یا نه؟](#چطوری-بررسی-کنیم-که-یه-آبجکت-promise-هست-یا-نه) | | +|413| [چطوری متوجه بشیم که یا تابع با تابع constructor صدا زده شده یا نه؟](#چطوری-متوجه-بشیم-که-یا-تابع-با-تابع-constructor-صدا-زده-شده-یا-نه) | | +|414| [تفاوت‌های بین آبجکت argument و پارامتر rest چیه؟](#تفاوتهای-بین-آبجکت-argument-و-پارامتر-rest-چیه) | | +|415| [تفاوت‌های بین عملگر spread و پارامتر rest چیه؟](#تفاوتهای-بین-عملگر-spread-و-پارامتر-rest-چیه) | | +|416| [نوع‌های مختلف generatorها کدوما هستن؟](#نوعهای-مختلف-generatorها-کدوما-هستن) | | +|417| [iterableهای built-in کدوما هستن؟](#iterableهای-built-in-کدوما-هستن) | | +|418| [تفاوت‌های بین حلقه for...of و for...in چیه؟](#تفاوتهای-بین-حلقه-forof-و-forin-چیه) | | +|419| [چطوری propertyهای instance و غیر instanceای تعریف می‌کنی؟](#چطوری-propertyهای-instance-و-غیر-instanceای-تعریف-می‌کنی) | | +|420| [تفاوت‌های بین isNaN و Number.isNaN کدوما هستن؟](#تفاوتهای-بین-isNaN-و-NumberisNaN-کدوما-هستن) | | + +{Pishgoftar}
                @@ -3778,7 +3773,7 @@ footerTemplate: '