<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد مسعودی</title>
        <link>https://virgool.io/feed/@mmasoudih</link>
        <description>همیشه در حال یادگیری ...</description>
        <language>fa</language>
        <pubDate>2026-06-28 09:45:37</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/217114/avatar/MIs31Q.jpeg?height=120&amp;width=120</url>
            <title>محمد مسعودی</title>
            <link>https://virgool.io/@mmasoudih</link>
        </image>

                    <item>
                <title>آموزش جاوااسکریپت -  تبدیل تایپ‌ها در جاوااسکریپت</title>
                <link>https://virgool.io/@mmasoudih/type-conversions-m3kyv7yxmsyv</link>
                <description>بیشتر اوقات ، عملگرها و توابع به طور خودکار مقادیر داده شده به آنها را به نوع(type) مناسب تبدیل می کنند. برای مثال تابع alert هر مقداری که بهش بدیم تبدیلش میکنه به string و بعد نشونش میده، عملگر های ریاضی مقدار ها رو به عدد تبدیل میکننهمچنین توی بعضی موارد نیازه که به صورت دستی نوع یک مقدار رو عوض کنیم تبدیل رشته‌ای (String Conversion)تبدیل به string زمانی اتفاق می افته که یک مقدار رو به صورت رشته‌ای نیاز داشته باشیمبرای نمونه alert&#40;value&#41; تبدیل به string را برای نمایش، انجام می‌دههمینطور می‌تونیم با صدا زدن String(value) تبدیل یک مقدار به string رو انجام بدیمlet value = true;
alert&#40;typeof value&#41;; // boolean
value = String(value); // now value is a string &amp;quottrue&amp;quot
alert&#40;typeof value&#41;; // stringتبدیل به string معمولا واضحه false به &quot;false&quot; و null به &quot;null&quot; تبدیل میشه و برای بقیه مقادیر هم به همین ترتیب انجام میشهتبدیل عددی (Numeric Conversion)تبدیل به عدد توی فانکشن‌ها و عبارات ریاضیاتی به طور خودکار انجام می‌شهبرای نمونه وقتی تقسیم / روی مقادیر غیر عددی انجام میشه (اعداد از نوع رشته به نوع عددی تبدیل میشن):alert&#40; &amp;quot6&amp;quot / &amp;quot2&amp;quot &#41;; // 3, strings are converted to numbersبرای این که بخوایم خودمون یه مقداری رو به عدد تبدیل کنیم میتونیم از Number(value) استفاده کنیم : let str = &amp;quot123&amp;quot
alert&#40;typeof str&#41;; // string
let num = Number(str); // becomes a number 123
alert&#40;typeof num&#41;; // numberوقتی داریم یه سری مقدار ها رو از یه جایی مثل input از کاربر میگیریم لازمه که به عدد تبدیلش کنیم اگه رشته‌ای که وارد شده باشه یه عدد معتبر نباشه نتیجه‌ی تبدیلش به عدد NaN هست مثلا:let age = Number(&amp;quotan arbitrary string instead of a number&amp;quot);
alert&#40;age&#41;; // NaN, conversion failedقواعد تبدیل به Number :مقدار undefined به NaN تبدیل میشه مقدار null به 0 تبدیل میشه مقدار true , false به 0 , 1 تبدیل میشه مقدار string : فاصله‌های خالی ابتدا و انتها حذف می‌شوند. اگر رشته‌ی باقی مانده خالی باشد نتیجه 0 خواهد بود. در غیر اینصورت عدد موجود در رشته کاراکترها خوانده خواهد شد. همینطور اگر خطایی رخ دهد نتیجه NaN خواهد بودمثال: alert&#40; Number(&amp;quot   123   &amp;quot&#41; ); // 123
alert&#40; Number(&amp;quot123z&amp;quot&#41; );      // NaN (error reading a number at &amp;quotz&amp;quot)
alert&#40; Number(true&#41; );        // 1
alert&#40; Number(false&#41; );       // 0توجه کنین که null و undefined اینجا متفاوت عمل می‌کنن Null به 0 تبدیل می‌شه و undefined به NaN تبدیل می‌شهتبدیل منطقی (Boolean Conversion)تبدیل به boolean راحت ترین حالتهنتیجه یه عملگر های شرطی Boolean هست و همچنین میتونیم با استفاده از Boolean(value) یه مقدار رو تبدیل کنیمقاعده تبدیل Boolean  :مقادیری که در ظاهر &quot;خالی&quot; هستن، مثل 0 ، string خالی ، null ، undefined و NaN به false تبدیل می‌شن، بقیه مقادیر به true تبدیل می‌شنبرای مثال : alert&#40; Boolean(1&#41; ); // true
alert&#40; Boolean(0&#41; ); // false

alert&#40; Boolean(&amp;quothello&amp;quot&#41; ); // true
alert&#40; Boolean(&amp;quot&amp;quot&#41; ); // false×× نکته ×× یک صفر رشته‌ای  &quot;0&quot; نتیجه‌اش میشه true بعضی از زبان های برنامه نویسی مثل PHP میاد  &quot;0&quot; رو به false تبدیل میکنه اما توی جاوااسکریپت هر رشته‌ای که خالی نباشه با هر مقداری تبدیل میشه به truealert&#40; Boolean(&amp;quot0&amp;quot&#41; ); // true
alert&#40; Boolean(&amp;quot &amp;quot&#41; ); // spaces, also true (any non-empty string is true)خلاصهسه تبدیل پرکاربردی که استفاده میشه، تبدیل رشته‌ای، عددی و منطقی هستتبدیل به string - وقتی که می‌خوایم خروجی‌ای داشته باشیم اتفاق میوفته. از طریق String(value) قابل انجامهتبدیل به number– در عملگرهای ریاضیاتی اتفاق میوفته. از طریق Number(value) هم قابل انجامهتبدیل به boolean – در عملگرهای  منطقی اتفاق میوفته. از طریق Boolean(value) قابل انجامهپست قبلی(آموزش جاوااسکریپت - تعامل با کاربر) https://vrgl.ir/y5yFN اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Tue, 27 Apr 2021 17:29:58 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش جاوااسکریپت - تعامل با کاربر</title>
                <link>https://virgool.io/@mmasoudih/alert-prompt-confirm-ex4bk8lxpat9</link>
                <description> از اونجایی که داریم از مرورگر برای اجرای کد‌های جاوااسکریپتمون استفاده میکنیم بیاین تا با چند تا از دستوراتی که میتونیم با کاربر تعامل داشته باشیم اشنا بشیم تابع alert این تابع رو توی آموزش های قبلی دیدیم این یک پیغام نشون میده و منتظر کاربر میمونه تا «OK» رو فشار بده  برای مثال: alert&#40;&amp;quotHello&amp;quot&#41;;این پنجره‌ی کوچیک همراه با پیغام یک modal window هست کلمه «modal» به معنی اینه که بازدیدکننده نمیتونه با بقیه‌ی صفحه تعامل کنه، دکمه‌های دیگه رو بزنه و یا غیره، تا زمانی که با پنجره بازشده کارش تموم شده باشه. تو این مورد خاص -- تا زمانی که دکمه‌ی «OK» رو بزنهتابع promptتابع prompt دو پارامتر داره: result = prompt&#40;title, default&#41;;این یه modal window با یه متن نشون میده، که یه فیلد ورودی هم داخلش هست که کاربر میتونه توش یه متنی وارد کنه و دو تا دکمه OK و Cancel داره title : پیغامی که به کاربر نشون داده میشهdefault: پارامتری اختیاری که مقدار اولیه برای فیلد ورودی رو تنظیم میکنه  کاربر میتونه یه چیزی تایپ کنه توی فیلد ورودی prompt و دکمه OK رو بزنه بعدش ما به متنی که وارد کرده از طریق متغیر result میتونیم دسترسی داشته باشیم و اگه Cancel یا دکمه Esc رو بزنه متغیر result مقدارش null میشه برای نمونه : let age = prompt&#40;&#039;How old are you?&#039;, 100&#41;;
alert&#40;`You are ${age} years old!`&#41;; // You are 100 years old!یک نکته برای اینترنت‌اکسپلورر (IE) پارامتر دوم که اختیاری هست (همون مقدار اولیه) رو اگه وارد نکنین توی مرورگر اینترنت اکسپلورر توی فیلد ورودی &quot;undefined&quot; مینویسهاین کد رو توی اینترنت اکسپلورر اجرا کنین: let test = prompt&#40;&amp;quotTest&amp;quot&#41;;اگه میخواین prompt هاتون درست کار کنن(هنوز کسی هست که از IE استفاده کنه!!) توی IE توصیه میکنیم که همیشه پارامتر دوم رو یه رشته خالی پاس بدین : let test = prompt&#40;&amp;quotTest&amp;quot, &#039;&#039;&#41;; // &lt;-- for IEتابع confirmشکل نوشتنش اینجوریه:  result = confirm&#40;question&#41;;تابع confirm یه modal window با یه سوال نشون میده و دو تا دکمه Ok و Cancel هم داره نتیجه‌اش هم اگه کاربر Ok بزنه True میشه در غیر این صورت False برای مثال: let isBoss = confirm&#40;&amp;quotAre you the boss?&amp;quot&#41;;
alert&#40; isBoss &#41;; // true if OK is pressedخلاصهتوی این قسمت ما ۳ تا از تابع های مخصوص مرورگر که برای تعامل با کاربر هست رو توضیح دادیم:‌تابع alert : یک پیغام نشون کاربر میده تابع prompt : یک پیغام نشون کاربر میده و یک فیلد ورودی هم داره تا کاربر توش یک متن وارد کنه اگر Ok بزنه متن رو برمیگردونه توی نتیجه و در غیر این‌صورت nullتابع confirm : یک پیغام نشون کاربر میده و تا زمانی که دکمه Ok یا Cancel رو نزنه صبر میکنه اگه Ok رو بزنه true و اگه Esc/Cancel رو بزنه false رو برمیگردونه همه این توابع modal هستن، باعث متوقف شدن اجرای اسکریپت میشن و اجازه نمیدن که کاربر با بقیه قسمت های صفحه کار کنه تا وقتی که کارشون با این پنجره ها تموم بشه دو تا محدودیت توی توابع بالا وجود داره :  محل modal window رو مرورگر مشخص میکنه و معمولا وسط صفحه هستشکل نمایش پنجره‌ای هم باز بستگی به مرورگر داره که چطور نشون بده و ما نمیتونیم ویرایشش کنیم این بهایی هست که برای سادگی پرداخت میکنیم راه های دیگه‌ای برای نمایش پنجره‌های تعاملی با کاربر وجود داره ولی اگه زرق و برق براتون مهم نیست این توابع کار رو به خوبی انجام میدن پست قبلی(دیتا تایپ‌ها در جاوااسکریپت) https://virgool.io/@mmasoudih/types-nhhebxk3m1ej پست بعدی (تبدیل تایپ ها در جاوااسکریپت) https://vrgl.ir/L5Zpd اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Sat, 03 Apr 2021 14:25:42 +0430</pubDate>
            </item>
                    <item>
                <title>دیتا تایپ‌ها در جاوااسکریپت</title>
                <link>https://virgool.io/@mmasoudih/types-nhhebxk3m1ej</link>
                <description>یک مقدار توی جاوااسکریپت همیشه از یک تایپ خاص هست به عنوان مثال رشته یا یک عدددر جاوااسکریپت هشت تایپ داده اصلی وجود داره، اینجا ما به طور کلی به آنها خواهیم پرداخت و در فصل های بعدی به طور مفصل در مورد هر یک صحبت خواهیم کرد.ما میتونیم هر تایپ رو توی یک متغیر قرار بدیم، به عنوان مثال یک متغیر میتونه اول یک رشته باشه و بعد یک عدد رو ذخیره کنه// no erorr
let message = &amp;quothello&amp;quot
message = 123456;زبان های برنامه‌نویسی که اجازه این کار و به ما میدن مثل جاوااسکریپت «تایپ پویا» میگن بهشون به این معنی که انواع دیتا تایپ‌ها وجود دارن اما متغیر‌ها به هیچ کدوم از اونا محدود نیستن.عدد(Number)let n = 123;
n = 12.345;تایپ عدد هر دو مقدار عدد صحیح و اعشاری رو نشون میده عملگر های زیاید برای کار با عدد وجود داره مثل ضرب * ، تقسیم / ، جمع + ، تفریق − و غیره ...علاوه بر عدد های عادی، به اصطلاح «مقادیر ویژه عددی» وجود دارد که متعلق به این دیتا تایپ عدد هستن:Infinity ,  -Infinity , NaN بی‌نهایت (Infinity) نشان دهنده  Infinity ∞ ریاضی هست این مقدار خاص هست که از هر عددی بیشتره می‌تونیم اونو در نتیجه تقسیم بر صفر بدست بیاریم:alert&#40; 1 / 0 &#41;; // Infinityیا فقط مستقیم بهش اشاره کنیم:‌alert&#40; Infinity &#41;; // Infinityمقدار (NaN) نشان دهنده یک خطای محاسباتی هست، این یک نتیجه از عملیات ریاضی نادرست یا تعریف نشده هست به عنوان مثال:‌alert&#40; &amp;quotnot a number&amp;quot / 2 &#41;; // NaN, such division is erroneousهر عملی بر روی NaN نتیجه NaN خواهد داشت :alert&#40; &amp;quotnot a number&amp;quot / 2 + 5 &#41;; // NaNدر نتیجه اگر NaN توی عملیات ریاضیاتی‌ای وجود داشته باشه، بر روی تمام معادله تاثیر میذاره (نتیجه معادله برابر NaN خواهد بود)عملیات ریاضی در جاوا اسکریپت امن هست ما هر نوع عملی میتونیم انجام بدیم مثل تقسیم بر صفر. اسکریپت ما هیچ‌وقت با خطا مواجه نخواهد شد. در بدترین حالت NaN را به عنوان نتیجه خواهیم گرفتاعداد بزرگ (BigInt)توی جاوااسکریپت تایپ Number نمیتونه اعداد بزرگ‌تر از (۱ - ۵۳^۲ ) یعنی (9007199254740991)  رو نشون بده و کمتر از (۱−۵۳^۲)− برای اعداد منفیبرای بیشتر اهداف که کاملا به اندازه کافی هست، اما گاهی اوقات ما نیاز اعداد واقعا بزرگ داریم، به عنوان مثال، برای رمزنگاری یا زمان سنج با دقت میکرو ثانیهتایپ BigInt اخیرا به زبان اضافه شده تا اعداد صحیح با طول دلخواه رو نشون بده یک مقدار BigInt با اضافه کردن حرف n به اخر یک عدد صحیح ایجاد میشه // the &amp;quotn&amp;quot at the end means it&#039;s a BigInt
const bigInt = 1234567890123456789012345678901234567890n;از اونجایی که BigInt به ندرت استفاده میشه اینجا اون رو توضیح نمیدیم اما یک فصل جداگانه رو بهش اختصاص دادیم وقتی به چنین اعداد بزرگی احتیاج دارین اونجا رو بخونین (توی قسمت های بعدی قرار میدم براتون)مشکلات سازگاریدر حال حاضر BigInt توسط مرورگر های FireFox/Chrome/Edge/Safari پشتیبانی میشه و همون طور که میتونین حدس بزنین مرورگر IE پشتیبانیش نمیکنه توی این لینک هم میتونین چک کنین که دقیقا روی چه ورژن هایی از مرورگر ها پشتیبانی میشهرشته(String) یه رشته توی جاوااسکریپت باید بین دو تا کوتِیشِن باشه let str = &amp;quotHello&amp;quot
let str2 = &#039;Single quotes are ok too&#039;;
let phrase = `can embed another ${str}`;توی جاوا اسکریپت سه نوع کوتِیشِن داریم :1. Double qoutes مانند &quot;Hello&quot;.2. Single qoutes مانند &#x27;Hello&#x27;.3. Backticks مانند &#x60;Hello&#x60;.دابل و سینگل‌ کوتِیشِن ساده هستن و فرقی ندارن با هم دیگه توی جاوااسکریپت بک‌تیک توسعه یافته ساختار کوتِیشِن هست، به ما این اجازه رو میده تا متغیر و یا یه سری عملیات‌ها رو با قرار دادن اونا در {...}$ توی یک رشته قرار بدیم، به عنوان مثال:‌let name = &amp;quotJohn&amp;quot
// embed a variable
alert&#40; `Hello, ${name}!` &#41;; // Hello, John!
// embed an expression
alert&#40; `the result is ${1 + 2}` &#41;; // the result is 3عبارت داخل  {...}$  محاسبه میشه و نتیجه‌اش به بخشی از رشته تبدیل میشه ما میتونیم هر چیزی رو توش قرار بدیم مثل متغیر یا یک عبارت مثل ۱ + ۲ یا یه چیز پیچیده ترلطفا توجه کنین این قابلیت فقط زمانی هست که از بک‌تیک استفاده کنین توی دابل و سینگل کوتِیشِن این قابلیت وجود نداره alert&#40; &amp;quotthe result is ${1 + 2}&amp;quot &#41;; // the result is ${1 + 2} (double quotes do nothing)در مورد رشته‌ها توی آموزش های بعدی بیشتر توضیح میدیمتایپ کارکتری وجود نداره در برخی زبان‌ها یه تایپ خاص به اسم «character» وجود داره که برای یک کاراکتر هست.به عنوان مثال در زبان برنامه‌نویسی C و Java این نوع «char» نام گذاری شدهدر جاوااسکریپت، این مدل تایپ رو نداریم. فقط یه تایپ String داریم، یک String میتونه خالی باشه یا یک کاراکتر داشته باشه و یا خیلی بیشتر از یک کاراکترتایپ منطقی‌(Boolean)تایپ منطقی فقط دو تا مقدار True و False داره این تایپ معمولا برای نگهداری مقدار های بله/خیر استفاده میشه، true یعنی «بله،‌درست» و false یعنی «نه، نادرست»برای نمونه :let nameFieldChecked = true; // yes, name field is checked
let ageFieldChecked = false; // no, age field is not checkedمقدار های منطقی همچنین میتونین از نتیجه یک مقایسه هم باشن:let isGreater = 4 &gt; 1;
alert&#40; isGreater &#41;; // true (the comparison result is &amp;quotyes&amp;quot)که مثال بالا یعنی ۴ بزرگتر از ۱ هست؟ و جوابش میشه «بله» یا همون trueدر مورد Boolean ها در بخش‌های بعدی صحبت خواهیم کرد.مقدار nullمقدار null به هیچ کدوم از دیتا تایپ هایی که بالا گفتیم ربطی ندارهاین یک تایپ جداگانه هست که فقط شامل مقدار null هست :let age = null;در جاوااسکریپت مثل بعضی از زبان های برنامه نویسی null به هیچ آبجکتی اشاره نمیکنه یا اشاره‌گر به null نیست فقط یه مقدار خاص هست که نشون‌دهنده «هیچی» ، «خالی» و یا «مقدار ناشناخته» هستکد بالا یعنی مقدار سن ناشناخته هستمقدار undefinedمقدار undefined هم مثل null جدا از بقیه هست و ربطی نداره به هیچ تایپیمعنی undefined یعنی «مقداری هنوز اختصاص داده نشده»اگه یک متغیر تعریف بشه اما مقداردهی نشه اون موقع مقدارش undefined هست let age;
alert&#40;age&#41;; // shows &amp;quotundefined&amp;quotاز نظر فنی میشه به یک متغیر مقدار undefined رو اختصاص داد :let age = 100;
// change the value to undefined
age = undefined;
alert&#40;age&#41;; // &amp;quotundefined&amp;quotاما ما این کار رو توصیه نمی‌کنیم و برای تخصیص مقدار &quot;خالی&quot; یا &quot;ناشناخته&quot; از null استفاده می‌کنیم و از undefined برای بررسی اینکه به متغیری مقدار تخصیص یافته یا خیر استفاده می‌کنیمتایپ  Objects و Symbolsتایپ object یک تایپ خاص هست به تایپ های دیگه میگن تایپ اولیه چون که مقدار اونا فقط میتونه یه چیز باشه (مثل رشته، عدد یا بقیه چیزا) در مقابل object ها برای ذخیره مجموعه‌ای از داده ها و موجودیت های پیچیده‌تر استفاده می‌شن بعد از اینکه در مورد تایپ های اولیه بیشتر مطالعه کردیم، در مورد object ها بیشتر خواهیم آموختنوع symbol برای ایجاد یک شناسه منحصر به فرد برای object ها مورد استفاده قرار میگیره. برای تکمیل عنوان این بخش این نوع داده را نیز در اینجا گفتیم ولی بهتره جزئیات اون رو در بخش‌های بعدی بررسی کنیمعملگر typeof عملگر typeof تایپ یک مقدار رو برمیگردونه و این خیلی به درد میخوره وقتی که ما میخوایم روی مقدارهایی با تایپ های مختلف عملیات خاصی انجام بدیم یا این که فقط بخوایم چک کنیم که تایپ فلان مقدار چیه به دو صورت میتونیم ازش استفاده کنیم:۱. به صورت عملگر : typeof x۲. به صورت فانکشن: typeof(x)به عبارت دیگه این هم بدون پرانتز میشه ازش استفاده کرد و هم با پرانتز، نتیجه‌اش هم یکسانه وقتی که typeof x رو استفاده میکنم نتیجه‌اش یه رشته هست که تایپ مقدار x رو برامون برمیگردونه typeof undefined // &amp;quotundefined&amp;quot
typeof 0 // &amp;quotnumber&amp;quot
typeof 10n // &amp;quotbigint&amp;quot
typeof true // &amp;quotboolean&amp;quot
typeof &amp;quotfoo&amp;quot // &amp;quotstring&amp;quot
typeof Symbol(&amp;quotid&amp;quot) // &amp;quotsymbol&amp;quot
typeof Math // &amp;quotobject&amp;quot  (1)
typeof null // &amp;quotobject&amp;quot  (2)
typeof alert // &amp;quotfunction&amp;quot  (3)سه خط آخر ممکنه نیاز به توضیحات اضافی داشته باشند: ۱. آبجکت Math اصطلاحا built-in (از پیش نوشته شده در هسته زبان) هست که عملیات متنوع ریاضیاتی در اختیار ما قرار میده. در اینجا صرفا یک مثال از اون رو نمایش دادیم و در بخش Numbers با اون بیشتر آشنا خواهیم شد۲. خروجی typeof null همونطور که می‌بینید &quot;object&quot; هست و این صحیح نیست. این یک خطا در نوع کار typeof هست که به منظور سازگاری باقی مونده مطمئنا null یک object نیست. خودِ null یکی از انواع داده در جاوا اسکریپته۳. تایپ alert یک فانکشن هست چرا که alert یکی از فانکشن‌های جاوا اسکریپت هست ما در بخش‌های بعدی با فانکشن‌ها بیشتر آشنا میشیم و خواهیم آموخت که نوعی تحت عنوان فانکشن نداریم و خودِ فانکشن‌ها در اصل از نوعِ object هستن اما عملگر typeof با اونا به طرز دیگه‌ای برخورد می‌کنهخلاصه۸ تا تایپ ابتدایی توی جاوااسکریپت وجود داره اعداد(number) برای هر نوع عددی استفاده میشه صحیح، اعشاری اعداد بزرگ(bigint) برای اعداد صحیح با طول دلخواه استفاده میشه رشته(string) برای مقدار های رشته‌ای استفاده میشه یک رشته میتونه خالی باشه یا یک کاراکتر داشته باشه یا بیشتر از یک کاراکتر، تایپ جداگانه‌ای برای کاراکتر وجود نداره مقدار منطقی(boolean) برای صحیح/غلط یا همون True , Falseمقدار null برای مقدار های ناشناخته - خودش یه تایپ هست و به بقیه تایپ ها ربطی ندارهمقدار undefined برای مقدار های اختصاص داده نشده - این هم خودش یه تایپه و بقیه تایپ ها ربطی نداره مقدار obejct برای ساختمان داده های پیچیده‌تر مقدار symbol برای شناسه های یکتاعملگر typeof به ما این اجازه رو میده تا ببینیم توی متغیر چه نوع داده‌ای ذخیره شدهدو نوع میشه ازش استفاده کرد : typeof x یا typeof(x)یک رشته برمیگردونه که اسم تایپ اون مقدار هست مثل &quot;string&quot;برای null مقدار &quot;object&quot; رو برمیگردونه - این یه ارور توی زبان هست و واقعا اینجوری نیست و آبجکت نیست پست قبلی (متغیرها در جاوا‌اسکریپت) https://virgool.io/@mmasoudih/variables-ssgxg9o7o7je پست بعدی(آموزش جاوااسکریپت - تعامل با کاربر) https://virgool.io/@mmasoudih/alert-prompt-confirm-ex4bk8lxpat9 اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Tue, 30 Mar 2021 18:14:09 +0430</pubDate>
            </item>
                    <item>
                <title>آمار بازدید پست‌های من در سال ۹۹</title>
                <link>https://virgool.io/@mmasoudih/%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D9%BE%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-%DB%B9%DB%B9-f8is2vjfxj9k</link>
                <description>در طول تاریخ از اعداد استفاده کردیم تا اغلب داد و ستد کنیم و آن‌چیزی که شمردنی است را بشماریم. برای هر عدد واحد درست کردیم تا عددهای زندگی قاطی نشوند و از اعداد، شفاف‌تر استفاده کنیم؛ مثلا وقتی می‌گوییم ده هزار تومان به پول اشاره داریم و وقتی می‌گوییم ده هزار بلیط به بلیط!روز به روز که در زندگی جلو‌تر رفتیم عددها فرقی نکردند ولی این واحدها بودند که زیاد شدند. واحد کریپتو، واحد اصله درخت، واحد فاصله و …«واحد» یک توافق عمومی است برای شمردن؛ تا همانطور که گفتم شمردن‌ها قاطی نشود. مشاهده افراد دارای ثروت (اجتماعی یا مالی) به من ثابت کرده اینکه چه چیزی را بشماریم از اینکه چطور بشماریم مهم‌تر است. هرکس با واحد خاصی مسائل زندگی را می‌شمارد. اینطور به نظرم آمده که مشخص کردن واحد یعنی مشخص کردن اینکه من در زندگی برای چه چیزهایی ارزش قائلم و می‌خواهم چه چیزهایی را در زندگی بشمارم. https://cdn.virgool.io/annual-report/1399/oj7uzme2a6qx-q2ern.mp4 اعدادی که بدون واحد ثبت کردمبه ویدیویی که ویرگول برایم ساخته که نگاه می‌کنم میبینم که در سال ۹۹، من در مجموع ۸,۷۴۵ کلمه در ویرگول نوشتم و منتشر کردم و مخاطبین، پست‌های من را ۷۱ مرتبه پسندیدند و  ۳۰ بار هم نظر خود را روی پست‌های من به اشتراک گذاشتند. در سال ۹۹، ۱۳ نفر در ویرگول من را دنبال کردند تا پست‌های بعدیم را بخوانند. این اعداد نشان میدهند من کاری کرده‌ام. هرکدام به واحدی وصل هستند. از خودم می‌پرسم من کدام واحد را شمارش کرده‌ام؟ کدامیک از واحدهای بالا از همه برای من مهم‌تر است؟ ادامه ویدیو را می‌بینم.آمار از اثر بیرونی می‌گویندطبق آمار پست‌های من ۳,۰۳۲ بار خوانده شدند و ۱۷۰,۱۱۹ ثانیه صرف مطالعه آنها شده است، که با توجه به جمعیتی که در ایران به اینترنت دسترسی دارند، ویرگول به من می‌گوید که توانستم  ۰/۰۰۲۳۳۲۳۱۴ ثانیه، سرانه مطالعه دیجیتال کشور را بالا ببرم.از طرف دیگر ویرگول به من می‌گوید که اگر قرار بود پست‌هایم را چاپ و به دست تک تک خوانندگان برسانم باید ۱۲,۴۴۸ کاغذ مصرف می‌کردم.آن عددهای کوچک ابتدای ویدیو حالا تبدیل شده‌اند به عددهای بزرگ به اینکه من جلوی مصرف این تعداد کاغذ را گرفتم یا به اینکه من  ۰/۰۰۲۳۳۲۳۱۴ ثانیه، سرانه مطالعه دیجیتال کشور را جابه جا کرده‌ام. واحد این عددها برای من ملموس‌تر است.واحد نوشتن چیست؟همه عددهای بالا و همینطور اثر بیرونی که روی خوانندگان و همینطور در مقیاس بزرگتر طبیعت و جامعه اطرافم گذاشتم اعدادی هستند که من دوستشان دارم و به آنها افتخار می‌کنم. اگر چنین ویدیویی دست شما نیز رسید به شما بابت تک تک اعداد تبریک می‌گویم.اثر هر نوشته تا حدودی معلوم است، اگر بنویسید جلوی قطع درخت را می‌گیرید، به سرانه مطالعه کشور اضافه می‌کنید و خوانندگانی جذب می‌کنید که شما را از طریق نوشته‌هایتان می‌شناسند و …به نظرم می‌رسد که نوشته‌های من و شما واحد ندارند ولی اثر بیرونی دارند.</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Tue, 23 Mar 2021 02:17:09 +0430</pubDate>
            </item>
                    <item>
                <title>متغیرها در جاوا‌اسکریپت</title>
                <link>https://virgool.io/@mmasoudih/variables-ssgxg9o7o7je</link>
                <description>let box = &#039;Cat&#039;بیشتر اوقات توی یک برنامه جاوا اسکریپتی با اطلاعات سر و کار داریم مثلا :‌ فروشگاه آنلاین: اطلاعاتی مثل کالاهای فروخته شده و سبد خرید داره برنامه چت آنلاین: اطلاعاتی مثل لیست کاربران، پیام ها و خیلی چیزای دیگه داره متغیر های برای نگهداری اطلاعات استفاده میشن متغیر چیه؟ متغیر یه حافظه نام گذاری شده هست که برای نگهداری اطلاعات میتونیم ازش استفاده کنیم   برای ساختن یک متغیر توی جاوا اسکریپت از کلمه let استفاده کنیندستور زیر یه متغیر رو با نام message تعریف میکنه :let message;حالا ما میتونیم یه سری اطلاعات رو با عملگر = بریزیم توش let message; 
message = &#039;Hello&#039;; // یه رشته رو نگهداری میکنه حالا این متغیر تو حافظه ذخیره شده میتونیم با استفاده از نامش بهش دسترسی داشته باشیم:let message;
message = &#039;Hello!&#039;;
alert&#40;message&#41;; // محتوای متغیر رو نشون میدهمیتونیم خلاصه تر هم بنویسیم یعنی مراحل تعریف کردن و مقداردهی رو توی یک خط انجام بدیم :  let message = &#039;Hello!&#039;; // تعریف کردن متغیر و مقدار دادن 
alert&#40;message&#41;; // Hello!همچنین میتونیم چند تا متغیر رو توی یک خط تعریف کنیم :let user = &#039;John&#039;, age = 25, message = &#039;Hello&#039;;اینجوری کوتاه تر به نظر میرسه، ولی توصیه نمیشه اینجوری استفاده کنین و خوانایی کد رو پایین میاره بهتره که هر متغیر رو توی یک خط تعریف کنین چند خطی نوشتن طولانی تره اما خوندنش راحت تره: let user = &#039;John&#039;;
let age = 25;
let message = &#039;Hello&#039;;بعضیا چند تا متغیر رو اینجوری چند خطی تعریف میکنن: let user = &#039;John&#039;,
  age = 25,
  message = &#039;Hello&#039;;یا ویرگول رو اولش میذارن :‌let user = &#039;John&#039;
  , age = 25
  , message = &#039;Hello&#039;;از نظر فنی همه اینا یه کار انجام میدن و انتخاب این که از کدوم مدلش استفاده کنین سلیقه‌ای هست و شخصیه استفاده از var به جای letتوی اسکریپت های قدیمی شاید کلمه var رو به جای let دیده باشین : var message = &#039;Hello&#039;;کلمه var تقریبا مثل let هست و متغیر تعریف میکنه اما یکم فرق میکنه و روش قدیمی هست تفاوت های ریزی بین let و var هست اما هنوز برای ما مهم نیست توی فصل «var قدیمی» به طور مفصل توضیح میدیمشیه مثال توی زندگی واقعی برای درک بهتر متغیر‌ها یه جعبه رو تصور کنین که برای نگهداری اطلاعات هست و یه نام منحصر به‌ فرد داره که روی جعبه نوشته شده برای نمونه، متغیر message رو میتونین یه برچسب در نظر بگیرین که روی جعبه زده شده و مقدار داخلش هم hello هست :میتونیم هر داده دیگه‌ای داخل این جعبه قرار بدیم همچنین میتونیم هر چند بار که خواستیم تغییرش بدیم :let message;
message = &#039;Hello!&#039;;
message = &#039;World!&#039;; // مقدار متغیر اینجا تغییر کرد 
alert&#40;message&#41;;وقتی که مقدار متغیر عوض میشه اطلاعات قبلیش پاک میشه : همچنین میتونیم دو تا متغیر تعریف کنیم و اطلاعات رو از یکی به دیگری کپی کنیم  let hello = &#039;Hello world!&#039;;
let message;
// copy &#039;Hello world&#039; from hello into message
message = hello;
// حالا دو تا متغیر اطلاعات یکسانی دارن
alert&#40;hello&#41;; // Hello world!
alert&#40;message&#41;; // Hello world!دوبار تعریف کردن باعث ایجاد خطا میشه، یه متغیر فقط یه بار باید تعریف بشه تعریف دوباره متغیری که قبلا تعریف شده خطا میده: let message = &amp;quotThis&amp;quot
//  repeated &#039;let&#039; leads to an error
let message = &amp;quotThat&amp;quot // اینجا ارور میده که از قبل تعریف شده پس باید متغیر رو یه بار تعریف کنیم و برای اشاره کردن بهش از let استفاده نکنیم زبان‌های رویه‌ای(Functional)جالبه بدونین زبان‌های functional مثل Scala یا Erlang تغییر مقدار متغیر رو ممنوع کردنتوی این نوع زبان‌ها وقتی مقداری رو توی جعبه قرار می‌دیم تا ابد اونجا می‌مونه و اگه بخوایم مقدار دیگه‌ای رو ذخیره کنیم، ما رو مجبور می‌کنن تا جعبه‌‌ی جدید بسازیماگرچه توی نگاه اول این زبان‌ها عجیب به نظر میان، ولی کاملا توانایی توسعه‌ (توی پروژه‌های) جدی رو دارن مهم‌تر از اون توی زمینه‌هایی مثل محاسبات موازی (Parallel Computation) این محدودیت‌ها تبدیل به مزیت میشن مطالعه‌ی این زبان‌ها (حتی اگه به این زودی قصد استفاده از اونا را ندارین) برای وسیع شدن دیدتون، توصیه می‌شهنام‌گذاری متغیردو تا محدودیت برای نام‌گذاری متغیرها توی جاوا اسکریپت وجود داره: نام حتما باید حروف، اعداد، یا نماد های $ و _ باشهاولین کاراکتر نباید با عدد شروع بشهیه مثال از نام‌گذاری درست : let userName;
let test123;وقتی که یک نام چند کلمه داره، عموما از روش camelCase استفاده میکنیم به این صورت که کلمات یکی بعد از دیگری پشت هم نوشته میشن و حرف اول هر کلمه کاراکتر بزرگ هست : myVeryLongName .همینطور از $ و _ هم میشه استفاده کرد. معنی خاصی ندارن و مثل حروف قابل استفاده هستناین نام‌ها معتبر هستند :let $ = 1; //تعریف یک متغیر با  : &amp;quot$&amp;quot
let _ = 2; // تعریف یک متغیر با : &amp;quot_&amp;quot
alert&#40;$ + _&#41;; // 3مثالی از نام‌گذاری غلط: let 1a; // نمیتونه با عدد شروع بشه 
let my-name; // علامت منفی (خط تیره) نباید استفاده بشه حروف کوچیک و بزرگ فرق میکنه متغیر apple و AppLE دو تا متغیر جداگانه هستن و یکی نیستن حروف غیر انگلیسی هم مجازه ولی توصیه نمیشه let имя = &#039;...&#039;;
let 我 = &#039;...&#039;;از نظر فنی اینا درست کار می‌کنن ولی بر اساس یک رسم بین‌المللی برای نام متغیرها از زبان انگلیسی استفاده می‌شه حتی اگه اسکریپت کوچیکی می‌نویسیم، ممکنه تا مدت طولانی‌ای مورد استفاده و توسعه قرار بگیره و افرادی از بقیه کشورها ممکنه نیاز باشه روزی اون اسکریپت رو بخونننام های رزرو شده تعدادی نام رزرو شده وجود داره که نمیشه از اونا برای نام متغیرها استفاده کرد برای این که اونا توسط خودِ زبان جاوا اسکریپت استفاده شدنمثلا let، class، return و function رزرو شده هستناین کد خطای دستوری میده: let let = 5; 
/*
 نمیشه نام یه متغیر رو
let
گذاشت
*/
 
let return = 5; 
/*
همچنین نمیشه نامش رو
return
گذاشت
*/مقدار دهی بدون «use strict»قبلا این امکان وجود داشت تا متغیری رو بدون استفاده از let و صرفا با مقدار دهی تعریف کرد درصورتیکه از use strict استفاده نکنیم، این امکان همچنان وجود دارهتوی این مثال از use strict استفاده نشده:num = 5;
 /*
متغیر
num
اگه وجود نداشته باشه ایجاد میشه
*/
alert&#40;num&#41;; // 5این روش مناسب نیست و در صورت وجود use strict با خطا مواجه خواهد شد:&amp;quotuse strict&amp;quot
num = 5; 
/*
 ارور :‌ متغیر  
num
تعریف نشده!
*/ثابت هابرای تعریف کردن یک ثابت (متغیر هایی که مقدارشون غیر قابل تغییره) از کلمه const به جای let استفاده کنین: const myBirthday = &#039;18.04.1982&#039;;متغیر هایی که با کلمه const تعریف میشن رو ثابت میگیم بهشون ثابت‌ها دوباره قابل مقدار دهی نیستن و اگه سعی کنیم اونا رو تغییر بدیم به خطا میخوریم: const myBirthday = &#039;18.04.1982&#039;;
myBirthday = &#039;01.01.2001&#039;; // ارور میده چون نمیشه مقدار ثابت رو تغییر دادوقتی یه برنامه نویس مطمئنه که متغیر هیچ‌وقت عوض نمیشه میتونه اونو به عنوان ثابت تعریف کنهثابت‌های با حروف بزرگبه صورت یک عُرفِ همه‌گیر، از ثابت‌های با حروف بزرگ به عنوان نام مستعار برای مقادیری که به خاطر سپردن اونا دشواره، استفاده می‌شه. این دسته از ثابت‌ها اصطلاحا prior to execution (پیش از اجرای برنامه) مقدارشون قطعیهتوی ثابت‌ها از حروف بزرگ و _ استفاده می‌شه :const COLOR_RED = &amp;quot#F00&amp;quot
const COLOR_GREEN = &amp;quot#0F0&amp;quot
const COLOR_BLUE = &amp;quot#00F&amp;quot
const COLOR_ORANGE = &amp;quot#FF7F00&amp;quot
// ... ما نیاز داریم یه رنگ انتخاب کنیم 
let color = COLOR_ORANGE;
alert&#40;color&#41;; // #FF7F00مزایای استفاده از ثابت‌ها :به خاطر سپردن COLOR_ORANGE خیلی راحت‌تر از FF7F00# هست غلط نوشتن #FF7F00 از COLOR_ORANGE خیلی آسون‌ترهموقعی خوندن کدها، COLOR_ORANGE با معنی تر از FF7F00# هست چه زمانی باید از حروف بزرگ و چه زمانی باید از حروف معمولی برای نام‌گذاری ثابت استفاده کنیم؟ثابت بودن یک متغیر صرفا به این معنیه که مقدار اون تغییر نخواهد کرد. یک دسته از ثابت‌ها قبل از اجرای برنامه مقدارشون قطعی خواهد بود و دسته دیگه در حین اجرای (Run Time) برنامه مقدارشون مشخص می‌شه (و دیگه مقدارشون تغییر نمی‌کنه)برای نمونه :‌const pageLoadTime = /* زمانی که طول کشیده تا صفحه وب بارگذاری بشه*/;مقدار ثابت pageLoadTime قبل از اجرای برنامه مشخص نبوده و به همین دلیل به صورت عادی نوشته شده اما هنوز یک ثابته چون که بعد از مقداردهی تغییر نمیکنهثابت‌های با حروف بزرگ زمانی که اصطلاحا مقداری به صورت &quot;hard code&quot; شده داریم، استفاده می‌شه (مثل کد رنگ قرمز) نام های مناسب انتخاب کنین لطفا نام متغیرهای خودتونو با حساسیت انتخاب کنین و برای اینکار خوب فکر کنینانتخاب نام برای متغیرها یکی از کارهای مهم و پیچیده توی برنامه‌نویسیه یک نگاه سریع به نام متغیرها میتونه تفاوت یک برنامه‌نویس تازه‌کار و با تجربه را نشان بدهتوی پروژه‌های واقعی، بجای از صفر نوشتن برنامه‌ها، بیشتر زمان صرف اصلاح و توسعه کدهای موجود می‌شه. وقتی بعد از مدتی به کدهای قبلی بر‌میگردیم، بدست آوردن اطلاعات از کد‌هایی که نام‌گذاری‌های خوبی دارن خیلی راحت‌تره (منظور متغیرهاییه که نام‌های خوبی دارن)لطفا قبل از انتخاب نام برای یک متغیر خوب بهش فکر کنین نتیجه‌اش رو حتما میبینینیه سری قوانین که اگه رعایت کنین خوبه :از نام‌هایی که برای انسان قابل فهم است استفاده کنید مانند userName یا shoppingCart از نام‌های مخفف یا کوتاه استفاده نکنین مثل a، b، c، مگه اینکه بدونین چیکار دارین میکنیننام‌های کاملا واضح و مختصر انتخاب کنین نمونه‌هایی از نام‌های بد data و value هستن این نام‌ها هیچ‌چیزی رو توضیح نمی‌دن. استفاده از این مدل نام‌ها فقط زمانی قابل قبوله که محتوای کدی که می‌نویسین استثنا مشخص کنه که data یا value به چه چیزی اشاره می‌کنهبا ذهن خود و تیم کاریتان توافق نظر داشته باشین اگر به مخاطبان وب‌سایت‌تون user میگین، متغیرهای مرتبط رو به جای currentVisitor یا newManInTown باید currentUser یا newUser نام‌گذاری کنینایجاد یا استفاده مجدد ؟به عنوان آخرین نکته بعضی از برنامه‌نویسای تنبل بجای تعریف متغیرهای جدید، از متغیرهای موجود دوباره استفاده می‌کنندر نتیجه متغیرهای اونا مثل جعبه‌‌ایه که افراد متفاوت چیزهای مختلفی توش ریختن و نام روی برچسب اونا رو تغییر ندادن، این دسته از برنامه‌نویسان در تعریف متغیر مقداری صرفه‌جویی میکنن، ولی مدت زمان زیادی از زمان رفع خطاها رو افزایش میدنبهینه‌سازی‌هایی که توی مرورگرهای امروزی و همینطور کم‌حجم‌کننده‌های جاوا اسکریپت صورت می‌گیره، در بوجود نیامدن مشکلات عملکردی (Performance) برنامه‌های ما کمک می‌کنن حتی استفاده از متغیرهای مختلف برای مقادیر مختلف به موتور جاوا اسکریپت کمک می‌کنه تا کد شما رو بهینه کنهخلاصهمتغیرها رو برای نگهداری اطلاعات میتونیم با کلمه های var , let و یا const تعریف کنیم کلمه let روش مدرن تعریف کردن متغیره کلمه var یه روش قدیمی هست برای تعریف متغیر در حالت معمولی ازش استفاده‌ای نمیکنیم اما تفاوت هاش با let رو توی قسمت «var قدیمی» توضیح میدیمکلمه const مثل let هست اما مقدارش نمیتونه تغییر کنه متغیرها باید جوری نام‌گذاری بشن تا راحت متوجه بشیم داخلشون چیهپست بعدی (دیتا تایپ‌ها در جاوااسکریپت ) https://virgool.io/@mmasoudih/types-nhhebxk3m1ej  پست قبلی(این قسمت جاوا اسکریپت سخت گیر می‌شود !) https://virgool.io/Only-js/strict-mode-wfjkbwn4w0lo اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Thu, 11 Mar 2021 23:56:55 +0330</pubDate>
            </item>
                    <item>
                <title>این قسمت جاوا اسکریپت سخت گیر می‌شود !</title>
                <link>https://virgool.io/Only-js/strict-mode-wfjkbwn4w0lo</link>
                <description>برای مدت طولانی جاوا اسکریپت بدون مشکل سازگار پذیری توسعه داده می‌شد و امکانات جدید بدون اینکه نیازی به تغییر در امکانات قبلی باشه، به این زبان اضافه می‌شد.مزیت این موضوع این بود که هیچوقت توی کدهای قدیمی اشکالی به‌وجود نمیومد اما مشکل اینجا بود که اگر اشکالی در طراحی زبان، توسط خالقان جاوا اسکریپت رخ داده بود، تا ابد بجا میمونداین موضوع تا سال 2009 که ECMAScript 5 (ES5) معرفی شد، ادامه داشت.ES5 قابلیت‌های جدیدی رو به زبان اضافه کرد و اصلاحاتی رو هم روی امکانات فعلی انجام داد.برای اینکه کدهای قدیمی کار کنن، بیشتر تغییراتی که در ES5 اتفاق افتاد، به صورت پیش‌فرض غیر فعاله، و برای فعال کردن اونا باید از طریق عبارت &quot;use strict&quot; این کارو انجام داد.حالت سخت‌گیرانه یا همون  &quot;use strict&quot; عبارت دستوری (directive) &quot;use strict&quot; یا &#x27;use strict&#x27; شبیه به یه رشته هست که زمانیکه اول اسکریپت قرار می‌گیره، تمام اسکریپت روی حالت مدرن کار خواهد کرد. برای نمونه :&amp;quotuse strict&amp;quot
//  این کد ها توی حالت مدرن کار میکنن
...در مورد فانکشن‌ها (روشی برای گروه‌بندی کردن دستورات) در آینده خواهیم آموخت.اینجا صرفا اینو بدونین که میتونیم اول بیشتر فانکشن‌ها &quot;use strict&quot; رو بذاریم تا قواعد مدرن فقط روی کد های فانکشن اعمال بشهمطمئن بشین که use strict رو اول کداتون گذاشتین در غیر این صورت حالت مدرن فعال براتون فعال نمیشه alert&#40;&amp;quotsome code&amp;quot&#41;;
//یه سری توضیحات ...
&amp;quotuse strict&amp;quot
// حالت سخت‌گیرانه اینجا غیر فعالهفقط توضیحات میتونن بالای &quot;use strict&quot; قرار بگیرنهیچ راه برای غیرفعال کردن use strict وجود نداره هیچ دستوری مثل no use strict وجود نداره تا به موتور جاوا اسکریپت دستور بده که به روش قدیمی کار کنه. زمانی‌که use strict رو قرار می‌دیم، راه برگشتی وجود ندارهکنسول مرورگروقتی از کنسول توسعه دهنده برای اجرا کردن کد استفاده می‌کنین حواستون به این باشه که به صورت پیش‌فرض از use strict استفاده نمیکنهبعضی وقتا use strict یه تفاوت هایی ایجاد میکنه که شما ممکنه نتیجه اشتباهی بگیرینپس واقعا چجوری از use strict توی کنسول مرورگر استفاده کنیم؟از دکمه های Shift+Enter استفاده کنین تا بتونین توی چند خط کد بنویسین، و use strict رو بالای کداتون بذارین مثل مثال زیر :‌&#039;use strict&#039;; &lt;Shift+Enter برای خط جدید&gt;
//  ...کداتون
&lt;Enter برای اجرا شدن&gt;این روش توی اکثر مرورگرها یعنی Firefox و Chrome کار می کنه ولی اگه کار نکرد مثلا مرورگرتون قدیمی بود یا هر چیز دیگه‌ای یه روش هست براش اما روش زشتیه، اما خب میشه مطمئن شد که حتما use strict کار میکنه :(function() {
  &#039;use strict&#039;;
  // کداتون رو اینجا بذارین 
})()اصلا باید از use strict استفاده کنیم یا نه؟ممکنه این سوال واضح به نظر برسه ولی اینطور نیستتوصیه میکنم از use strict اول کداتون استفاده کنین، اما میدونین چی جالبه؟جاوا اسکریپت مدرن از کلاس ها و ماژول ها و ساختار های پیشرفته زبان (که توی آموزش های بعدی بهشون میرسیم) پشتیبانی میکنه که use strict رو به صورت خودکار فعال میکنه، پس اگه از اونا استفاده کنیم لازم نیست از use strict استفاده کنیمفعلا use strict رو به عنوان یک مهمون بالای اسکریپت هاتون استفاده کنین بعدا که به ماژول ها و کلاس ها رسیدم میتونیم این مهمون رو بفرستیم بره خونه خودش :)توی قسمت های بعدی ویژگی های زبان رو یاد میگیریم و تفاوت های حالت سخت‌گیرانه و حالت قدیمی رو میبینیم، خوشبختانه تعدادشون زیاد نیست و در واقع زندگی ما بهتر میکنن :)پست قبلی (آشنایی بیشتر با ساختار برنامه نویسی با جاوا اسکریپت) https://vrgl.ir/D9rer پست بعدی (متغیرها در جاوا‌ اسکریپت)  https://vrgl.ir/YTxew اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب </description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Fri, 12 Feb 2021 19:19:51 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی بیشتر با ساختار برنامه نویسی با جاوا اسکریپت</title>
                <link>https://virgool.io/@mmasoudih/structure-fnqm3mersz3v</link>
                <description>اولین چیزی که ما باید یاد بگیریم ساختار یک قطعه کد هست دستورات (statements)دستورات و ساختارهایی که یه سری کارای خاصی رو انجام میدن توی آموزش قبلی هم یه سری دستور دیدیم , ‍‍(&#x27;سلام دنیا !&#x27;)alert که یک پیغام «سلام دنیا!» رو نشون میداد میتونیم تعداد زیادی دستور داشته باشیم و با استفاده از سمی‌کالن ; میتونن از هم دیگه جدا بشن بذارین یک مثال بزنم تا بهتر متوجه بشین، اینجا ما &quot;سلام دنیا&quot; توی دو تا دستور alert جدا کردیم alert&#40;&#039;سلام&#039;&#41;; alert&#40;&#039;دنیا&#039;&#41;;معمولا دستورات ها توی خط های جدا نوشته میشن تا خوانایی کد بالا بره : alert&#40;&#039;سلام&#039;&#41;;
alert&#40;&#039;دنیا&#039;&#41;;نقطه ویرگول (Semicolon)اگه خط شکسته بشه میتونیم نقطه ویرگول نذاریم این باز هم اجرا میشه: alert&#40;&#039;سلام&#039;&#41;
alert&#40;&#039;دنیا&#039;&#41;توی این مثال بالا مفسر جاوا اسکریپت وقتی به یک خط شکسته شده میرسه اونو یه نقطه ویرگول فرضی در نظر میگیره و خودش اونو قرار میده برامون، این ویژگی اسمش «درج خودکار نقطه ویرگول» هست توی بیشتر موارد، یک خط جدید، یک نقطه ویرگول فرضی حساب میشه. اما «بیشتر موارد» به معنی «همیشه» نیست !بعضی جاها هست که خط جدید به معنی نقطه ویرگول نیست برای مثال :alert&#40;3 +
1
+ 2&#41;;خروجی کد بالا ۶ هست برای این که جاوا اسکریپت اینجا نقطه ویرگول اضافه نکرده، خیلی واضحه که اگه اخر خط علامت &quot;+&quot; باشه یعنی این عبارت ناقص هست  پس نقطه ویرگول لازم نیست اما بعضی جاها هست که جاوا اسکریپت گیج میشه و نمیدونه که باید نقطه ویرگول بذاره بالاخره یا نذاره ! پیدا کردن مشکل توی این موارد خیلی سخته مثالی از خطا  اگه کنجکاوین که یک مثال از این مدل خطا ها رو ببینین این کد رو بررسی کنین :  [1, 2].forEach(alert)فعلا لازم نیست فکر کنین که معنی [ ] و forEach چیه بعدا یاد میگیرم چی هستن الان فقط یادتون باشه که نتیجه کد بالا چیه اول عدد ۱ رو نشون میده و بعدش عدد ۲ خب بریم تا یک alert‍ قبل از کد اضافه کنیم و اون رو با نقطه ویرگول تموم نکنیم alert&#40;&amp;quotخطایی اتفاق خواهد افتاد&amp;quot&#41;
[1, 2].forEach(alert)حالا اگه ما کد بالا رو اجرا کنیم فقط alert اول اجرا میشه و بعد ما یه خطا داریم !‌اما اگه بعد از alert اول یه نقطه ویرگول بذاریم همه چیز درست میشه  alert&#40;&amp;quotیوهو همه چی مرتبه اینجا !&amp;quot&#41;;
[1, 2].forEach(alert)اگه کد بالا رو اجرا کنین اول &quot;یوهو همه چی مرتبه اینجا !&quot; نشون داده میشه و بعدش به ترتیب عدد های ۱ و ۲ این خطا بدون نقطه ویرگول اتفاق میوفته چرا؟! چون که جاوا اسکریپت قبل از علامت کروشه [...] نقطه ویرگول نمیذاره پس، چون نقطه ویرگول به صورت خودکار اضافه نشده کد توی مثال قبلی یه عبارت واحد در نظر گرفته میشه و موتور یه همچین چیزی میبینه: alert&#40;&amp;quotیه خطا خواهیم داشت&amp;quot&#41;[1, 2].forEach(alert)یه لحظه صبر کن ببینم چی گفت ؟!!! موتور ؟ موتور چیه دیگه !توی این مقاله راجع به موتور های جاوا اسکریپت توضیح دادم که میتونین برین بخونین اما باید توی دو تا دستور جدا باشه، اینجوری ادغام کردن کردنشون با هم دیگه اشتباهه برای همون خطا میده توصیه میکنیم که نقطه ویرگول رو بین دستور های مختلف بذارین حتی اگه با یه خط جدید از هم دیگه جدا شدن، این قانون رو همه به صورت گسترده قبول کردنیه بار دیگه توجه کنین، ممکنه خیلی جاها از نقطه ویرگول استفاده نکنین اما استفاده ازش به خصوص اگه تازه‌کار هستین امن ترهتوضیحات (Comments)با گذر زمان برنامه ها پیچیده‌تر و پیچیده‌تر میشن و لازمه که توضیحاتی اضافه کنیم که معلوم باشه فلان خط از کد داره چیکار میکنه و چراتوضیحات رو میشه هر جایی از اسکریپت گذاشت اونا روی اجرا شدن کد تاثیر نمیذارن چون موتور اونا رو خیلی ساده نادیده میگیرهتوضیحات یک خطی با دو تا خط مورب یا همون اسلش رو به جلو شروع میشه یعنی اینجوری  // اگه اینجوری \\ بنویسین درست نیست این مدل از توضیحات میتونه در ادامه دستور بیاد یا این که کلا توی یک خط جدا باشه : // این توضیح یک خط رو کامل گرفته
alert&#40;&#039;سلام&#039;&#41;;
alert&#40;&#039;دنیا&#039;&#41;; //   این توضیحات در ادامه دستور اومدن   توضیحات چند خطی با یک خط مورب رو به جلو و ستاره شروع میشه و با یک ستاره و خط رو به جلو تموم میشه یعنی اینجوری :  /* اینجوری شروع میشه 
و یه سری توضیحات ...
*/ و اینجوری تموم میشه 
alert&#40;&#039;سلام&#039;&#41;;
alert&#40;&#039;دنیا&#039;&#41;;هر چی توی توضیحات بنویسیم اجرا نمیشه و نادیده گرفته میشه پس اگه ما کد هم بینش بنویسیم اجرا نمیشهبعضی وقتا لازم میشه تا به صورت موقتی یه تیکه کد رو غیرفعال کنیم اینجوری میتونیم انجامش بدیم :‌/*
alert&#40;&#039;سلام&#039;&#41;;
*/
alert&#40;&#039;دنیا&#039;&#41;;از کلید های میانبر استفاده کنینتوی بیشتر ویرایشگرا، یه خط از کد رو میتونیم با زدن دکمه های /+Ctrl تبدیلش کنیم به توضیح یک خطی و برای توضیحات چند خطی (اول اون تیکه‌ای که میخواین رو انتخاب کنین) و بعدش /+Ctrl+Shift  رو بزنین اگه از مک(Mac) استفاده میکنین به جای Ctrl  از Cmd و به جای Shift از Option استفاده کنینتوضیحات تو در تو پشتیبانی نمیشه!اگه به صورت تو در تو بخواین توضیحات بنویسین به خطا بر میخورینبه مثال زیر توجه کنین : /*
  /* توضیحات تو در تو ?!? */
*/
alert&#40; &#039;دنیا&#039; &#41;;لطفا توی کداتون توضیحات بنویسین :) با نوشتن توضیحات حجم کداتون زیاد میشه ولی این مشکلی نداره ابزار های زیادی وجود داره که کدتون رو قبل از انتشار روی سرور فشرده میکنه و توضیحات رو هم پاک میکنه، پس توی اسکریپت نهایی هیچ توضیحاتی وجود نداره، توضیحات هیچ تاثیر منفی توی برنامه نداره.پست قبلی (خب دیگه بیاین سلام کنیم به دنیای جاوا اسکریپت :)) https://vrgl.ir/K2aik پست بعدی(این قسمت جاوا اسکریپت سخت گیر می‌شود !) https://vrgl.ir/jtaKD اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Thu, 11 Feb 2021 18:38:36 +0330</pubDate>
            </item>
                    <item>
                <title>خب دیگه بیاین سلام کنیم به دنیای جاوا اسکریپت :)</title>
                <link>https://virgool.io/CodeLovers/hello-world-mxpmn3yzwo6r</link>
                <description>توی این قسمت از آموزش درباره خود جاوا اسکریپت میخوایم صحبت کنیم اما ما نیاز داریم تا توی یه محیط اسکریپت های خودمون رو اجرا کنیم، و از اونجایی که این کتاب آنلاینه مرورگر انتخاب خوبیه ما تعداد دستورات مخصوص مرورگر مثل (alert) رو به حداقل میرسونیم تا اگه قصد دارین روی محیط دیگه‌ای مثل (Node.js) تمرکز کنین وقتتون رو روی دستورات مرورگر نذارینجاوا اسکریپت همه جا :)توی قسمتی که مروبوط به جاوا اسکریپت در مرورگر هست کامل توضیحش میدیم فعلا میخوایم با ساختار کلی جاوا اسکریپت آشنا بشیمخب اول بیاین ببینیم چطوری میشه یه فایل اسکریپت رو به صفحه اضافه کرد، برای محیط سمت سرور مثل (Node.js) میتونین با زدن دستور &quot;node my.js&quot; اسکریپتتون رو اجرا کنین آشنایی با برچسب اسکریپت برنامه های جاوا اسکریپت تقریبا میتونن هر جایی از یه سند HTML با استفاده از برچسب  اجرا بشن.برای مثال :&lt;!DOCTYPE HTML&gt;
&lt;html&gt;
&lt;body&gt;
  &lt;p&gt;متن قبل از اسکریپت ...&lt;/p&gt;
  
    alert&#40; &#039;یوهوووو، سلاممممم&#039; &#41;;
  
  &lt;p&gt;... متن بعد از اسکریپت&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;هر چی توی برچسب اسکریپت هست وقتی که مرورگر پردازشش میکنه به صورت خودکار اجرا میشه.نشانه گذاری جدیدبرچسب  چند تا صفت داره که الان ما ازشون خیلی خیلی کم استفاده میکنیم ولی توی کد های قدیمی استفاده می‌شدن: صفت type (نوع) : &lt;...=script type&gt;توی HTML استاندارد قدیمی, (HTML 4) یه برچسب اسکریپت حتما باید صفت type رو می‌داشت، معمولا اینجوری نوشته می‌شد type=&amp;quottext/javascript&amp;quot دیگه لازم نیست نوشته بشه و همچنین توی HTML جدید معنی این صفت هم عوض شده و کار دیگه‌ای انجام میدهالان، میشه ازش برای ماژول های جاوا اسکریپت استفاده کرد اما این یک موضوع پیشرفته هست، ما توی بخش دیگه‌ای از آموزش در مورد ماژول ها صحبت خواهیم کردصفت language (زبان) :‌ &lt;...=script language&gt;این صفت به معنی این بود که زبان اسکریپت چی هست،استفاده از این صفت دیگه منطقی نیست چون به صورت پیش‌فرض روی زبان جاوا اسکریپت هست پس لازم نیست ازش استفاده کنیمتوضیحات قبل و بعد از اسکریپتتوی کتابا و راهنما های خیلی قدیمی، ممکنه توضیحاتی رو توی برچسب  به این شکل پیدا کنین :&lt;script type=&amp;quottext/javascript&amp;quot&gt;&lt;!--
    ...
//--&gt;این ترفند توی جاوا اسکریپت جدید استفاده نمیشه، این توضیحات کد های جاوا اسکریپت رو توی مرورگر های قدیمی مخفی میکنه و نمیدونستن که چطوری این برچسب رو پردازش کنن از اونجاییکه مرورگر های منتشر شده توی ۱۵ سال گذشته این مشکل رو ندارن این مدل توضیحات میتونه بهتون کمک کنه تا کد های خیلی قدیمی رو شناسایی کنیناسکریپت های خارجی اگه ما یه عالمه کد جاوا اسکریپت داشته باشیم میتونیم اونا رو به فایل های جدا تقسیم کنیم فایل های اسکریپت با صفت src میتونن به سند HTML اضافه بشن :&lt;script src=&amp;quot/path/to/script.js&amp;quot&gt;اینجا path/to/script.js/ یک مسیر مطلق به اسکریپت از ریشه سایت هست، همچنین می‌تونیم از صفحه فعلی مسیر نسبی بدیم برای نمونه :‌ &quot;src=&quot;script.js یعنی فایل &quot;script.js&quot; توی پوشه فعلی هستمیتونیم همچنین یه آدرس کامل هم بهش بدیم : &lt;script src=&amp;quothttps://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js&amp;quot&gt;برای اضافه کردن چند تا فایل میتونیم از چند تا برچسب اسکریپت HTML استفاده کنیم &lt;script src=&amp;quot/js/script1.js&amp;quot&gt;
&lt;script src=&amp;quot/js/script2.js&amp;quot&gt;
...لطفا توجه کنین :نکته اول: به طور معمول ، فقط ساده ترین اسکریپت ها در HTML قرار می‌گیرن موارد پیچیده‌تر توی فایل‌ های جداگانه‌ای قرار دارنفایده یک فایل جداگانه اینه که مرورگر اون رو دانلود میکنه و در [حافظه نهان] خودش ذخیره می کنهو بقیه فایل ها اگه به اون اسکریپت نیاز داشته باشن دوباره اون رو دانلود نمیکنن و از حافظه نهان برش میدارن بنابراین فقط یک‌بار دانلود میشهاین باعث کاهش ترافیک میشه و صفحات با سرعت بیشتری باز میشن نکته دوم: اگر صفت src روی برچسب  تنظیم شده باشه محتواش نادیده گرفته میشن یه برچسب  نمیتونه همزمان هم یه متن داخلش باشه و هم صفت src  داشته باشه این کد کار نمیکنه :‌&lt;script src=&amp;quotfile.js&amp;quot&gt;
  alert&#40;1&#41;; // این محتوا نادیده گرفته میشه 
ما باید یکی رو انتخاب کنیم یا برچسب اسکریپت با منبع خارجی  &lt;...=script src&gt;  و یا برچسب  معمولی با کد مثال بالا برای این که کار کنه باید به دو برچسب اسکریپت شکسته بشه :‌&lt;script src=&amp;quotfile.js&amp;quot&gt;

    alert&#40;1&#41;;
خلاصهما میتونیم از برچسب  برای اضافه کردن جاوا اسکریپت به یه صفحه استفاده کنیماستفاده از صفت های type و language لازم نیست یه اسکریپت توی فایل خارجی میتونه اینجوری به صفحه اضافه بشه:&lt;script src=&amp;quotpath/to/script.js&amp;quot&gt;چیزهای بیشتری برای یادگیری در مورد اسکریپت‌های مرورگر و تعامل اونا با صفحه وب وجود داره، اما یادتون باشه که این قسمت از آموزش به زبان جاوا اسکریپت اختصاص داره، بنابراین نباید توجهتون رو با استفاده از برنامه های خاص مرورگر منحرف کنیم  ما از مرورگر به عنوان راهی برای اجرای کد های جاوا اسکریپت استفاده خواهیم کرد که برای خوندن آنلاین خیلی مناسبه اما این یکی از روش های خیلی زیادی هست که میشه از جاوا اسکریپت استفاده کرد   تمرین تمرین اول: نشون دادن یه پیغام (alert) توی صفحه درجه اهمیت ‌: ۵یه صفحه درست کنین که توش یه پیغام نشون بدین با متن دلخواهتون[نمونه‌اش رو اینجا میتونین ببینین] تمرین دوم: نشون دادن یه پیغام (alert) توی صفحه با استفاده از یک فایل خارجی درجه اهمیت ‌: ۵از کد های تمرین قبلی استفاده کنین و اونا رو توی یک فایل خارجی به اسم alert.js بذارین و اون رو فراخوانی کنین بعدش صفحه رو باز کنین تا مطمئن بشین کار میکنه پست قبلی(کنسول توسعه دهنده در مرورگر (Developer Console) | عیب‌یابی کد های جاوا اسکریپت) https://vrgl.ir/T2WTk پست بعدی (آشنایی بیشتر با ساختار برنامه نویسی با جاوا اسکریپت) https://vrgl.ir/D9rer اشتراک گذاری یادتون نره و قلب پایین رو هم فشار بدین :)اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Tue, 09 Feb 2021 19:15:57 +0330</pubDate>
            </item>
                    <item>
                <title>کنسول توسعه دهنده در مرورگر (Developer Console) | عیب‌یابی کد های جاوا اسکریپت</title>
                <link>https://virgool.io/@mmasoudih/devtools-ajnctbqq5dyf</link>
                <description>برنامه‌نویسی همیشه توش خطا هست. شما به احتمال زیاد اشتباه می‌کنین ... اوه من دارم از چی صحبت میکنم ؟!!  اشتباه کردن یه چیزیه توی برنامه نویسی که حداقل اگه یه انسان بخواد یه برنامه‌ بنویسه اشتباه میکنه، مگه این که یه ربات بخواد این کار و انجام بده.اما توی مرورگر کاربرا به صورت پیش فرض هیچ خطایی نمی‌بینن پس اگه یه چیزی اشتباه باشه توی اسکریپتی که نوشتیم، ما نمیتونم ببینیم مشکل از چیه تا بتونیم حلش کنیمبرای دیدن خطاها و استفاده از اطلاعات مفید درباره اسکریپت‌ها قسمت &quot;developer tools&quot; (ابزارهای توسعه) توی مرورگرا جاسازی شدهبیشتر توسعه دهنده‌ها برای توسعه میرن سمت Chrome یا Firefox چون این مرورگرا بهترین ابزارهای توسعه رو دارن بقیه مرورگرا هم ابزارهای توسعه رو دارن، بعضی وقتا یه سری ویژگی خاص اضافه کردن اما معمولا با Chrome و Firefox بازی میکنن و زیاد فرق خاصی ندارنبنابراین بیشتر توسعه دهنده‌ها یه مرورگر مورد علاقه دارن و اگه یه مشکل توی یه مرورگر خاص وجود داشته باشه از بقیه مرورگرا استفاده میکننابزارهای توسعه خیلی قوی هستن، اونا خیلی قابلیت زیادی دارن برای شروع میریم سراغ این که چطوری بازشون کنیم و به خطاها یه نگاهی بندازیم و بعدشم چند تا دستور جاوا اسکریپت اجرا کنیم گوگل کروم (Google Chrome)این صفحه رو باز کنین (لینک)  اگه توی باز کردنش مشکی داشتین از یه پروکسی یا فیلترشکن استفاده کنینیه ارور جاوا اسکریپت توی این صفحه هست. اما بازدید کننده سایت نمیتونه اون رو ببینه پس بیاین تا ابزار های توسعه رو باز کنیم و اروره رو ببینیم دکمه F12 یا اگه از مک(Mac) استفاده میکنین Cmd+Opt+J رو بزنین ابزار های توسعه به صورت پیش‌فرض روی سر‌برگ Console باز میشه یه چیزی شبیه به این عکس باید باشه:عکسی از ارور داخل کنسول مرورگر کروماین شکل بستگی داره به نسخه مرورگرتون ممکنه فرق کنه اما به عکس بالا باید شبیه باشهاینجا ما میتونیم یه پیغام قرمز رنگ ببینیم، اسکریپت یه دستور ناشناخته &quot;lalala&quot; رو داره نشون میده سمت راست یه لینک قابل کلیک شدن هست که به جایی که این خطا رخ داده داره اشاره می‌کنه که توی عکس بالا گفته bug.html:12 و این یعنی توی خط 12 فایل bug.html یه مشکلی هستزیر متن خطا یه علامت آبی  &lt;  هست که داره محیط متنی (command line) رو نشون میده جایی که ما میتونیم دستورات جاوا اسکریپت رو تایپ کنیم و با زدن دکمه Enter اونا رو اجرا کنیم حالا ما میتونیم خطا ها رو ببینیم، و برای شروع این کافیه، ما بعدا به ابزار های توسعه بر می‌گردیم و توضیحات بیشتری رو توی قسمت (عیب یابی در کروم) بهتون میدیمهنوز این قسمت رو ترجمه نکردم به محض این که ترجمه‌اش تموم شد لینکش رو میذارماگه بخوام چند خط بنویسم و بعد اجرا کنم چیکار کنم ؟معمولا وقتی ما یه خط کد توی کنسول مینویسیم و دکمه Enter رو میزنیم و کدی که نوشتیم اجرا میشه برای این که بخوایم چند خط بنویسم و بعد اجراش کنیم باید Shift + Enter بزنیم و اینجوری میتونیم کد های طولانی تری بنویسم فایرفاکس(Firefox)، اج(Edge) و بقیه مرورگراتوی بیشتر مرورگرا با استفاده از F12 میشه ابزار های توسعه رو باز کرد ظاهر اونا کاملا مشابه هست وقتی که یکی از این ابزار ها رو بدونین (میتونین با کروم شروع کنین) بعدش خیلی راحته براتون تا با بقیه مرورگرا هم کار کنینسَفاری (Safari)سَفاری (مرورگری برای مک هست و توسط ویندوز/لینوکس پشتیبانی نمیشه) یه مقدار اینجا فرق میکنه ما نیاز داریم تا گزینه &quot;Develop menu&quot; رو فعال کنیماول Preferences رو باز کنین و به سربرگ Advanced برین یه تیک پایین صفحه هست اون رو باید فعال کنین حالا برای باز و بسته کردن کنسول میتونین از دکمه های  Cmd+Opt+C استفاده کنین عکسی از تنظیمات مرورگر سَفاریهمچنین، توجه کنین که منوی بالا به نام &quot;Develop&quot; ظاهر میشه و اون دستورات و گزینه های زیاده داره خلاصه ابزار های توسعه به ما اجازه میدن تا بتونیم خطاها رو ببینیم، دستورات رو اجرا کنیم، متغیرها رو بررسی کنیم و خیلی چیزای دیگه ...ابزار های توسعه رو توی بیشتر مرورگرا روی ویندوز میشه با F12 باز کرد و کروم برای مک رو با فشردن Cmd+Opt+J و همچنین مرورگر سَفاری هم با Cmd+Opt+C (البته باز اول فعالش کنین) میشه باز کردخب خب بالاخره محیط کاریمون آماده شد. توی قسمت بعدی میریم سراغ جاوا اسکریپت پست قبلی (کدوم ویرایشگر کد مناسب منه؟) https://vrgl.ir/vKgu1 پست بعدی (خب دیگه بیاین سلام کنیم به دنیای جاوا اسکریپت :)) https://vrgl.ir/K2aik اشتراک گذاری یادتون نره و قلب پایین رو هم فشار بدین :) اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Tue, 09 Feb 2021 00:08:35 +0330</pubDate>
            </item>
                    <item>
                <title>کدوم ویرایشگر کد برای من مناسبه؟</title>
                <link>https://virgool.io/@mmasoudih/code-editors-jnb1z9rxdoge</link>
                <description>ویرایشگر کد جایی هستش که برنامه نویسا بیشتر وقتشون رو اونجا میگذرونندو نوع اصلی از ویرایشگر های کد داریم: IDE ها و ادیتور های سبک بیشتر افراد از یک نوعش استفاده میکننخب این IDE که گفتیم چیه؟این اصلاح IDE (Integrated Development Environment) یا همون محیط توسعه یک‌پارچه یه ویرایشگر قدرتمنده با امکانات خیلی زیاد که معمولاً روی کل پروژه کار میکنه همون طور که از اسمش معلومه فقط یه ویرایشگر نیست بلکه یه محیط توسعه کاملهیه IDE  کل فایل‌های پروژه رو لود میکنه (که میتونه فایل‌های زیادی باشه)، اجازه میده که بین فایل‌ها جابه جا بشین، تکمیل خودکار بر اساس کل پروژه داره (نه فقط اون فایلی که باز شده) و با یه سیستم کنترل ورژن مثل Git ادغام میشه، یه محیط تست داره و بقیه چیزا که توی توسعه پروژه لازمهاگه هنوز IDE‌ خودتونو انتخاب نکردین گزینه های زیر رو در نظر بگیرین:Visual Studio Code : روی همه سیستم عامل‌ها اجرا میشه و رایگانهWebStorm :  روی همه سیستم عامل‌ها اجرا میشه و رایگان نیستبرای ویندوز، Visual Studio هم وجود داره، که نباید با Visual Studio Code اشتباه بگیرینش Visual Studio یه ویرایشگر پولی و قدرتمنده که فقط برای ویندوزه که برای پلتفرم .NET مناسبه  برای جاوا اسکریپت هم خوبه، همچنین یه نسخه رایگان Visual Studio Community وجود دارهخیلی از IDE ها رایگان نیستن اما یه دوره آزمایشی دارن هزینه اونا معمولاً در مقایسه با حقوق  توسعه‌دهنده‌ها ناچیزه، پس فقط بهترینشو برای خودتون انتخاب کنین.ویرایشگر های سبکویرایشگر های سبک خیلی قوی نیست در مقایسه با IDE ها اما سریع، زیبا و ساده هستناونا معمولاً برای باز کردن و ویرایش کردن سریع فایل استفاده میشنتفاوت اصلی بین «ویرایشگر سبک» و «IDE» اینه‌ که IDE توی سطح پروژه کار می‌کنه، بنابراین داده های بیشتری رو از ابتدا بارگیری می کنه، در صورت لزوم ساختار پروژه رو تجزیه و تحلیل می کنه و ... اگه فقط به یک فایل نیاز داشته باشیم، یک ویرایشگر سبک خیلی سریعترهویرایشگرهای سبک ممکنه‌افزونه های زیادی برای اضافه کردن قابلیت‌های مختلف داشته باشن پس مرز مشخصی نمیشه بین IDE‌ ها و ویرایشگر‌ها تعیین کردتوجه‌تون رو به چند تا این ویرایشگر ها جلب میکنم :AtomVisual Studio CodeSublime TextNotepad++Vim و Emacs هم دو تا ادیتور خفن هستن که اگه بلد باشین باهاشون کار کنین خوبهخب دیگه بیاین جر و بحث نکنیم سر این قضیهویرایشگر هایی که توی لیست بالا هستن من یا دوستام که به نظر من توسعه‌دهنده های خوبی هستن مدت هاست استفاده میکنیم و ازشون راضی هستیمادیتور های بزرگ دیگه‌ای توی این دنیای بزرگ وجود داره لطفاً اونی که بیشتر از همه خوشتون میاد رو انتخاب کنینانتخاب یک ویرایشگر  مثل بقیه ابزار های دیگه هست و بستگی داره به پروژه شما،‌ عادت‌ها  و تنظیمات شخصی‌تونپست قبلی (معرفی منابع مفید برای جاوا‌ اسکریپت) https://vrgl.ir/sJ4KQ پست بعدی (کنسول توسعه دهنده در مرورگر (Developer Console) | عیب‌یابی کد های جاوا اسکریپت) https://virgool.io/@mmasoudih/ajnctbqq5dyf اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Sat, 06 Feb 2021 18:23:03 +0330</pubDate>
            </item>
                    <item>
                <title>راهنما و  خصوصیات (معرفی منابع مفید برای جاوا‌ اسکریپت)</title>
                <link>https://virgool.io/@mmasoudih/manuals-specifications-vezg5cixv1ud</link>
                <description>این یک کتاب آموزشیه و به شما کمک می کنه که به تدریج زبان برنامه‌نویسی (جاوااسکریپت) رو یاد بگیرین اما بعد از آشنایی با اصول اولیه، به منابع بیشتری نیاز پیدا میکنینخصوصیاتخصوصیات ECMA-262  (The ECMA-262 specification)  شامل دقیق ترین و رسمی ترین اطلاعات در مورد جاوا‌اسکریپت هست که زبان رو تعریف می‌کنهاما به خاطر رسمی بودن  ممکنه، در ابتدا درک اون سخت باشه بنابراین اگه به معتبرترین منبع اطلاعاتی در مورد جزئیات زبان نیاز دارین، خصوصیات(specification) بهترین منبع قابل اعتماده اما این برای استفاده روزمره نیستهر سال یک نسخه جدید خصوصیات (specification) منتشر می شه. در بین این  نسخه‌ها ، نسخه پیش نویس خصوصیات(specification) رو می‌تونید توی لینک زیر  پیدا کنین https://tc39.es/ecma262/برای مطالعه درباره جدیدترین ویژگی هایی، از جمله ویژگی های &quot;تقریباً استاندارد&quot; (اصطلاحاً &quot;مرحله 3&quot;)( مرحله های آزمایشی) ، می‌تونین  به لینک زیر مراجعه کنین https://github.com/tc39/proposalsاگه شما در حال توسعه یک مرورگر وب هستین خصوصیات دیگه‌ای هم وجود داره که میتونین به بخش دوم آموزش (https://javascript.info/browser-environment) مراجعه کنینراهنما‌ هاMDN (Mozilla) یک منبع اصلی هست که مثال ها و اطلاعات زیادی در مورد زبان جاوا‌اسکریپت ارئه میده  دونستن اطلاعات عمیقی از زبان به شما کمک زیادی خواهد کرد و بسیار کاربردی خواهد بودمیتونین اون رو توی لینک زیر پیدا کنین https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenceاگرچه ، اغلب بهتره که به جای اون از جستجوی اینترنتی استفاده کنین عبارت MDN رو به همراه موضوع مورد نطر خودتون جستجو کنین مثال: https://google.com/search?q=MDN+parseIntجداول سازگاریجاوا اسکریپت یه زبان در حال توسعه هست، ویژگی های جدیدی همیشه به این زبان اضافه میشه برای بررسی پشتیبانی زبان از مرورگر های مختلف می‌تونین به لینک های زیر مراجعه کنین :http://caniuse.com/ -  جداول پشتیبانی از هر ویژگی ، به عنوان مثال برای دیدن اینکه کدوم موتورها  از کدوم عملکرد رمزنگاری مدرن پشتیبانی می کنن لینک زیر: http://caniuse.com/#feat=cryptographyhttps://kangax.github.io/compat-table - جدولی در مورد موتورهایی که کدوم ویژگی ها رو پشتیبانی می‌کنن و کدوم ویژگی‌ها رو پشتیبانی نمی کننهمه منابعی که معرفی شدن کاملا کاربردی در توسعه های واقعی هستن، همون طوری که اطلاعات مهم و ارزش مندی دارن لطفاً برای مواردی که به اطلاعات دقیق در مورد یک ویژگی خاص نیاز دارین ، این صفحه رو به یاد داشته باشیناین پست ادامه پست قبلی که مقدمه‌ای بر جاوا اسکریپت بود هستش و اگه اون رو نخوندین میتونین با کلیک روی اینجا برین و اون رو هم بخونین پست قبلی ( مقدمه‌ای بر جاوا اسکریپت) https://vrgl.ir/53OKA پست بعدی (کدوم ویرایشگر کد برای من مناسبه؟ ) https://vrgl.ir/vKgu1 اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب</description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Sat, 06 Feb 2021 17:17:40 +0330</pubDate>
            </item>
                    <item>
                <title>مقدمه‌ای بر جاوا اسکریپت</title>
                <link>https://virgool.io/@mmasoudih/introduction-to-javascript-ubjrf30ckg0f</link>
                <description>خب بیاین ببینیم جاوا اسکریپت چه چیزای خفنی برامون داره، چه کارایی میتونیم باهاش انجام بدیم و چه تکنولوژی هایی ازش استفاده میکنن.جاوا اسکریپت چیه؟ جاوا اسکریپت اول برای «زنده کردن صفحات وب» ساخته شدبرنامه هایی که با این زبان نوشته میشن اسمشون اسکریپت (script) هست، میشه اونا رو توی HTML یک صفحه وب نوشت و موقعی که صفحه بارگذاری میشه به صورت خودکار اجرا بشناسکریپت ها به صورت متن ساده نوشتن میشن و مراحل پیچیده‌ای برای اجرا شدن لازم نیست انجام بشه (میشه با یک ویرایشگر متن به راحتی اسکریپت نوشت)پس بذارین یه نکته‌ای همینجا بهتون بگم جاوااسکریپت(JavaScript) با یه زبان دیگه‌ای که اسمش جاوا(Java)  هست خییییلی فرق میکنه چرا بهش میگیم جاوا اسکریپت؟زمانی که جاوا اسکریپت ساخته شد، اوایل اسمش LiveScript بود. اما اون زمان جاوا خیلی محبوب بود پس تصمیم گرفتن که از جایگاه جاوا استفاده کنن و اسمش رو گذاشتن  &quot;برادر کوچکتر جاوا&quot;  تا از محبوبیت جاوا استفاده کنه.اما بیشتر که تکامل پیدا کرد جاوا اسکریپت به یه زبان کاملا مستقل تبدیل شد با ویژگی های خاص خودش به نام ECMAScript جاوا اسکریپت نه تنها توی مرورگر بلکه توی سرور یا هر جایی که موتور جاوا اسکریپت وجود داشته باشه میتونه اجرا بشهمرورگر توی خودش یه موتور جاوا اسکریپت داره که با استفاده از اون میتونه اسکریپت‌ها رو اجرا کنه که بعضیا بهش «ماشین مجازی جاوا اسکریپت هم میگن»موتور های مختلف، اسمای مخفف متفاوتی دارن که چند تاشون رو براتون میگم و جلوش هم مرورگر هایی که از این موتور ها استفاده میکنن مینویسم براتون :‌V8 - Chrome &amp; Opera SpiderMonkey  - Firefox  یه سری دیگه از موتور ها هستن مثل &quot;Chakra&quot; که برای مرورگر  Internet Explorer خدابیامرزه موتور &quot;ChakraCore&quot; برای مرورگر Microsoft Edgeموتور &quot;Nitro&quot; و &quot;SquirrelFish&quot; برای مرورگر Safariو ...این اصطلاحات بالا رو سعی کنین که یادتون بمونه، چون توی مقاله هایی که توسعه دهنده‌ها مینویسن از این چیزا زیاد استفاده میکنن مثلا اگه جایی خوندین که فلان ویژگی توی V8 فقط پشتیبانی میشه احتمالا توی مرورگر های Chrome و Opera کار میکنهخب این موتور هایی که راجع بهشون صحبت کردیم چطوری کار میکنن؟موتور‌ها خیلی پیچیده هستن ولی اصول اولیه‌ خیلی راحته ۱− موتوری که توی مرورگر هست میاد و اسکریپت رو میخونه یا parse‌اش میکنه ۲− بعد میاد اسکریپت رو تبدیلش میکنه به زبان ماشین (منظورم همون compile کردنه)۳− و بعد از کامپایل خیلی سریع اجراش میکنه موتورها توی هر کدوم از مراحل بهینه سازی هم انجام میدن، حتی اسکریپتی که کامپایل شده رو موقع اجرا بررسی میکنه و اطلاعاتی که از اول تا اخر برنامه رد و بدل میکنه رو تجزیه و تحلیل میکنه فرایند بهینه سازیش اینجوریهجاوا اسکریپت توی مروگر چه کارایی میتونه انجام بده؟جاوا اسکریپت کنونی یه زبان برنامه نویسی «امن» هست، دسترسی سطح پایین یعنی کار با مموری یا CPU رو  نمیده بهمون برای این که اوایل جاوا اسکریپت برای مرورگر ها ساخته شد و نیازی به این چیزا نداشتقابلیت های جاوا اسکریپت بستگی داره به این که کجا اجرا بشه به عنون مثال  Node.js از توابعی پشتیبانی می کنه که به جاوا اسکریپت امکان خوندن و نوشتن فایل ها ، انجام درخواست های شبکه و ... رو میده جاوا اسکریپت توی مرورگر می‌تونه همه کارهایی که مربوطه به دستکاری صفحه وب، تعامل با کاربر و سرور رو انجام بده.خب بذارین چند تا مثال براتون بزنم تا بهتر متوجه بشین: اضافه کردن تگ HTML جدید به صفحه، ویرایش کردن محتوای توی صفحه، یا تغییر دادن استایل‌هابه کارایی که کاربر توی صفحه انجام مثل کلیک‌کردن، تکون دادن ماوس یا فشار دادن کلیدهادرخواست ها رو از طریق شبکه به سرور میفرسته برای دانلود و اپلود (اصطلاحا تکنولوژی های AJAX و COMET)گرفتن و تنظیم کردن کوکی‌ها، پرسیدن سوال از کاربر و نشون دادن پیغام نگهداری اطلاعات روی مرورگر کاربر (با استفاده از local storage)جاوا اسکریپت توی مروگر چه کارایی نمی‌تونه انجام بده؟دست و پای جاوا اسکریپت توی مرورگر بسته هست اونم به خاطر اینه که اطلاعات کاربر توسط سایت های مخرب لو نره و به خطر نیوفته چند تا از این محدودیت ها رو براتون میگم :جاوااسکریپت توی مرورگر نمیتونه به فایل های روی هاردتون دسترسی داشته باشه و اونا رو بخونه یا یه چیزی بنویسه یا کپیشون کنه  و دسترسی مستقیمی به توابع سیستم عامل نداره مرورگر های به‌روز اجازه کار با فایل‌ها رو بهش میدن اما با اجازه کاربر و با دسترسی محدود شده و کاربر میتونه فایلش رو انتخاب کنه یا این که بِکشه بیاره بندازه توی پنجره مرورگر روش هایی برای کار کردن با دوربین و میکروفن هست که نیاز به اجازه کاربر داره پس جاوا اسکریپت نمیتونه خودش بیاد دوربین و باز کنه و ببینه چیکار میکنین و بعدش فیلمتون رو بفرسته برای آژانس امنیت ملی (NSA) تب ها یا پنجره های مختلف مرورگر با هم دیگه ارتباطی ندارن برای مثال بعضی وقتا یک پنجره از جاوا اسکریپت استفاده میکنه تا یک پنجره دیگه رو باز کنه اما توی این حالت هم اگر ادرس های سایتها فرق کنن ممکنه که نتونه دسترسی داشته باشه (از یه دامنه، پورت، یا پروتکل دیگه) اصطلاحا این ویژگی رو میگن &quot;Same Origin Policy&quot; برای حل این مسئله ، هر دو صفحه باید برای تبادل داده توافق کنن و یک کد جاوا اسکریپت خاص هست که اینو مدیریت می کنه. توی آموزش های بعدی میگم چی هست. این محدودیت، برای ایمنی کاربره مثلا یه صفحه از سایت http://anysite.com که یک کاربر باز کرده نباید بتونه به یک تب مرورگر دیگه به ادرس http://gmail.com  دسترسی پیدا کنه و اطلاعات رو از اونجا بدزدهجاوا اسکریپت می تونه به راحتی از طریق شبکه با سروری که صفحه فعلی از اونجا اومده ارتباط برقرار کنه اما نمیتونه از یه دامنه یا سایت دیگه اطلاعات رو دریافت کنه، ولی این کار ممکنه و لازمه که سرور داخل HTTP header ها اون رو قبول کنه، این محدودیت ها برای امنیت هستشبعضی از این محدودیت بستگی به این داره که جاوا اسکریپت کجا اجرا بشه مثلا اگه روی سرور اجرا بشه این محدودیت ها وجود نداره، مرورگرهای جدید هم اجازه میدن به افزونه هایی که ممکنه مجور های زیادی بخوانچی جاوا اسکریپت رو منحصر به فرد می‌کنه؟حداقل سه نکته جالب در مورد جاوا اسکریپت وجود داره: یکپارچگی کامل با  HTML / CSSکار های ساده به راحتی انجام میشن توسط مرورگر های اصلی پشتیبانی میشه و به صورت پیش‌فرض هم فعاله جاوا اسکریپت تنها فناوری هستش که این سه تا رو با هم دیگه ترکیب می‌کنه این چیزیه که جاوا اسکریپت رو منحصر به فرد می‌کنه به همین دلیل گسترده ترین ابزار برای ایجاد رابط های مرورگرهجاوا اسکریپت همچنین امکان ایجاد سرور و برنامه برای موبایل و ... هم بهمون میدهزبان هایی که روی جاوا اسکریپت هستنسینتکس(نحوه نوشتن کد) جاوا اسکریپت مناسب نیاز همه نیست، افراد مختلف ویژگی های مختلفی میخوان برای پروژه‌هاشوناین اواخر زبان های زیادی به وجود اومدن که قبل از اجرا شدن توی مرورگر تبدیل میشن به جاوا اسکریپت، ابزار های جدید این عمل تبدیل کردن رو خیلی سریع انجام میدن و به توسعه دهنده‌ها این اجازه رو میدن که توی یه زبان دیگه کد بزنن و در نهایت به صورت خودکار اون رو به جاوا اسکرپت تبدیل کنن چند تا از این زبان رو براتون مینویسم :CoffeeScript :  یه ترکیب شیرینه برای جاوا اسکریپت نحوه نوشتن کدها رو کوتاه تر کرده ، و به ما اجازه میده که کد های تمیز تر و بهتری بنویسیم معمولا توسعه دهنده های روبی  دوسش دارن  TypeScript : تمرکز تایپ‌اسکریپت اضافه کردن نوع داده های مختلفه به صورت سخت گیرانه تا فرایند توسعه و پشتیبانی سیستم های پیچیده رو راحت تر کنه و مایکروسافت هم توسعه‌اش دادهFlow: هم کارش مثل  تایپ‌اسکریپته اما یه جور دیگه این کار رو انجام میده و فیسبوک توسعه دهنده‌اش هست Dart: یه زبان مستقله که موتور خاص خودش رو داره که توی محیط های غیر از مرورگر اجرا میشه مثل اپلیکیشن های موبایل اما همچنان میتونه به جاوا اسکریپت تبدیل بشه، توسعه دهنده‌اش هم گوگل هستBrython: یه تبدیل کننده کد به جاوا اسکریپت هست که با پایتون کار میکنه و این اجازه رو میده که با پایتون خالص بدون استفاده از جاوا اسکریپت برنامه بنویسین Kotlin:  یک زبان برنامه نویسی جدیده که مختصره و امن که میتونه مرورگر یا  Node رو هدف قرار بده البته خیلی بیشتر از این ها هستن ولی اگه بخوایم از هر کدوم از این زبان های تبدیل کننده استفاده کنیم باید جاوا اسکریپت رو بلد باشیم تا واقعا بفهمیم داریم چیکار میکنیمخلاصهجاوا اسکریپت اون اوایل به عنوان یه زبان برای مرورگر ایجاد شد ، اما الان توی خیلی از محیط های دیگه هم ازش استفاده می‌شه.  امروزه جاوا اسکریپت جایگاه منحصر به فردی به عنوان گسترده ترین زبان مرورگر با یکپارچگی کامل با HTML / CSS داره  زبانهای زیادی وجود دارن که به جاوا اسکریپت &quot;منتقل میشن&quot; و ویژگیهای خاصی را ارائه می‌دن. توصیه می‌شه بعد از تسلط به جاوا اسکریپت، حداقل به طور خلاصه یه نگاهی بهشون بندازین.پست بعدی (معرفی منابع مفید برای جاوا‌ اسکریپت) https://vrgl.ir/sJ4KQ اگر توی این مقاله مشکلی بود یا خواستین توی این پروژه مشارکت کنین این لینک گیت‌هابش هست.منبعگیت‌هاب </description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Fri, 05 Feb 2021 13:25:11 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی سایت کسب درآمد از طریق حل کپچا (۲captcha)</title>
                <link>https://virgool.io/@mmasoudih/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%B3%D8%A7%DB%8C%D8%AA-%DA%A9%D8%B3%D8%A8-%D8%AF%D8%B1%D8%A2%D9%85%D8%AF-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%D8%AD%D9%84-%DA%A9%D9%BE%DA%86%D8%A7-%DB%B2captcha-we8v5vmsmxyf</link>
                <description>سلام دوستان امیدوارم که هر جا هستین حالتون خوب باشه :) توی این پست میخوام یه سایت معرفی کنم که با حل کردن کپچا های گوگل میتونین به کسب درآمد دلاری بپردازین.یک نمونه کپچا گوگلیک نمونه کپچاحتما تا حالا توی سرچ هایی که توی اینترنت داشتین به تصاویر اینچنینی برخورد کردین.اسم این تصاویر چی هست؟ کپچا (captcha)  مخفف جمله Completely Automated Public Turing Test To Tell Computers and Humans Apart هست و به معنی “آزمایش اتوماتیک عمومی برای تشخیص انسان از کامپیوتر” کسب درآمد با این روش اصلا آسون نیست(گفتم که بدونید)  یه سری نکات راجع به این سایت : ? داخل سایتش نمیتونین کپچا گوگل حل کنین ? زمان انتظار برای کپچا تغییر میکنه (اواخر شب سرعتش خیلی زیاد میشه)? برای حل کپچا یا باید برنامه مخصوص اندروید رو نصب کنید و یا برنامه مخصوص ویندوز ( برای سیستم های گنو/لینوکس و مکینتاش برنامه نداره)پیشنهاد: سعی کنین کپچا اصلا داخل سایتش نزنین، یه مدل کپچا داره که یه متن میاد و زیرش باید اون رو تایپ کنین روی اونا خیلی حساسه چند تا اشتباه بزنین حسابتون مسدود میشه و علاوه بر اون پول زیادی هم نمیده پس همون ریکپچا گوگل خیلی بهتره میزان درآمد از این سایت: به ازای هر ۱۰۰۰ عدد کپچا گوگل که حل کنین مبلغ ۱ تا ۱٫۸۰ دلار بهتون میده خب مراحل عضویت داخل این سایت رو براتون توضیح میدم: خب اول روی این لینک کلیک کنید تا وارد سایت بشینصفحه اول سایتروی گزینه Register کلیک کنینفرم عضویتتوی این صفحه یعنی همون صفحه ثبت‌نام اطلاعاتی که از شما خواسته شده رو وارد کنین و حتما یه ایمیل معتبر استفاده کنین (چون لینک تایید براتون میفرسته)?برای رمز عبور هم از این سایت استفاده کنین تا یه رمز عبور قوی براتون بسازه https://passwordsgenerator.net/اگر گزینه Simple captcha رو انتخاب کنید یه عکس میاد که اون رو باید تایپ کنی و اگر گزینه ReCaptcha رو بزنید یک کد امنیتی مثل تصاویر اول پست براتون ظاهر میشه که باید حلش کنید.فرم که کامل پر کردین روی گزینه Register بزنین ✅صفحه اول پنل کاربریخب اگه این صفحه براتون اومد یعنی کار درست انجام شده و شما عضو سایت شدین، اما هنوز عضویتتون کامل نشده و یه قدم دیگه مونده و داخل این صفحه هم بخشی که نوشته I&#x27;M A WORKER روی دکمه Next بزنید تا برید به مرحله بعدی :)تصویری از ایمیل ارسال شده از سمت سایتاگه یادتون باشه موقع ثبت نام گفتم ایمیل معتبر وارد کنینخب حالا وارد ایمیلتون بشین یه ایمیل مثل عکس براتون اومده که فقط کافیه روی اون لینک کلیک کنین تا حسابتون کامل فعال بشه و ثبت نام‌ تکمیل بشهبعد از این که ایمیلتون رو تایید کردید داخل پنل سایت دنبال این قسمت بگردین و کادری که نوشته Client key رو پیدا کنین اون رشته داخلش رو کپی کنید که برای برنامه‌ اندرویدی یا ویندوزیش لازمش داریمتصویری از Client key که برای استفاده در نرم افزار نیاز بهش هست تا اینجا ثبت نام توی سایت تمومه و فقط کافیه برنامه‌اش رو روی گوشی نصب کنیم و شروع کنیم به کسب درامداگر هم از ویندوز میخواین استفاده کنین میتونین از این لینک استفاده کنینhttps://2captcha.com/support/faq/51/داخل لینک بالا قسمت ویندوز دو تا لینک گذاشته که میتونین از هر دو نرم افزار استفاده کنین اما اولیش رو خود سایت پیشنهاد داده بهتون.تصویری از برنامه سایت در فروشگاه گوگلبرای نصب برنامه اندرویدش هم اول Play Store رو باز کنین و کلمه 2captcha رو جستجو کنین و برنامه‌اش رو نصب کنینصفحه اول برنامهوقتی برنامه‌ اندرویدش رو باز کنین یه همچین صفحه‌ای براتون میاد خب توی این مرحله باید Client key که کپی کردین رو داخل کادر بزنین و بعدش روی دکمه Auth بزنین تا وارد برنامه بشینو بعدش براتون کپچا میاره که حل کنین و این یعنی شروع کسب درآمد ?برداشت از سایت به مبلغ 0.70$برداشت از سایت به مبلغ 0.50$این هم اثبات دو تا از برداشت هام از سایت :))درگاه هایی که میتونین باهاش برداشت کنین از سایت :  Perfect Money AirTMBITCOINAdvCashPayeeruphold.comWebMoneyکه WebMoney ، BITCOIN ،  Perfect Money و Payeer درگاه هایی هستن که با ایران مشکل ندارن  و میتونین برداشت بزنین با استفاده از اونها ممنون از وقتی که گذاشتید و این پست رو خوندید :)) </description>
                <category>محمد مسعودی</category>
                <author>محمد مسعودی</author>
                <pubDate>Wed, 12 Aug 2020 22:36:23 +0430</pubDate>
            </item>
            </channel>
</rss>