<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Happy Learn</title>
        <link>https://virgool.io/feed/@happylearnmz</link>
        <description>اینجا قراره کلی اطلاعات مفید و باحال یاد بگیریم:)</description>
        <language>fa</language>
        <pubDate>2026-06-10 12:53:48</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/912586/avatar/PvzlC0.jpeg?height=120&amp;width=120</url>
            <title>Happy Learn</title>
            <link>https://virgool.io/@happylearnmz</link>
        </image>

                    <item>
                <title>call , bind , apply در جاوا اسکریپت</title>
                <link>https://virgool.io/@happylearnmz/call-bind-apply-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-bmuosgr18w0y</link>
                <description>call , bind , apply سلام سلام ما هپی لرن هستیم و شما دارید ششمین پست اموزشیمون رو از سایت ویرگول می‌خونید. در هپی لرن درباره‌ی موضوعات و مهارت هایی صحبت می‌کنیم که فارغ از این که شما با چه زبان برنامه نویسی دارید کد می‌زنید و یا چند ساله که دارید در حوزه برنامه نویسی فعالیت می‌کنید، میتونه بهتون کمک کنه تا در مسیر درست قرار بگیرید و سطح رضایتتون از کد زنی بالا ببرید. شما میتونید مقالات ما رو شنبه‌ها و جمعه ها از همین صفحه دنبال کنید.در مدل برنامه نویسی به زبان های مختلف object oriented وقتی که از کلمه کلیدی this استفاده می‌کنیم ،این this به نمومه جاری در کلاس برمیگرده.اما الان میخوایم بدونیم وضعیت this تو جاوا اسکریپت چطوره!!اینکه توی جاوا اسکریپت this دقیقا به چی اشاره می‌کنه و به ما چی برمی‌گردونه بستگی به این داره که function ها چطوری فراخوانی میشن.exampleاینجا ما person رو با استفاده از object خودش فراخوانی کردیم.exampleمی‌بینیم که خروجی این کد undefined است!اما حالا چرا اینطوری شد؟ما اینجاPerson.printname رو توی یه متغیر به اسم printfullname نوشتیم اما بعدش میایم و object اون رو بدون هیچ رفرنسی صدا می‌زنیم.بنابراین الان this به window (فضای کلی) اشاره می‌کند.وبرای همین undefined رو خروجی میده.exampleاینجا داریم counter.incremental رو فراخوانی میکنیم.به نظرتون خروجی اینجا چی میشه؟!اینجا this به DOM برمی‌گرده و به counter برنمی‌گرده.خب بیاید حالا یه مرور کنیم تا اینجا چی یاد گرفتیم؟!تا اینجا دیدیم که this داخل function ها به object های متفاوتی برمی‌گرده و هم‌چنین بستگی داره که توابع چطوری فراخوانی میشن!حالا چطوری این مسئله رو هندل کنیم؟خب ما تو جاوا اسکریپت ۳ تا method داریم برا فراخوانی،به اسم های  call,bind ,apply که خیلی هم مفید و کاربردی هستن.حالا بیاید بریم ببینیم اینا چیکار میکنن!با هرکدوم از این میشه به method ها و attribute های متفاوتی دسترسی داشته باشیم.bindاین method یک function جدید می‌سازد و this رو روی object خاصی set می‌کنه.bindدر این‌جا bind یک function جدید با پارامتری که قبلا تعریف شده(lang) می‌سازد و this هم به set، name خواهدشد.callاین متد this را داخلset , function می‌کند و مستقیما function را اجرا می‌کند،اینم بگم که argument ، call هارو هم قبول می‌کنه.حالا پس بیا ببینیم call و bind چه فرقی باهم دارند؟ در call مستقیما ،function رو اجرا می‌کنه و this رو set میکنه اما کپی از function  ایجاد نمی‌کنه.در حالی که bind یه کپی از function درست می‌کنه.applyکار این method هم مثل call هست با این تفاوت که در apply میشه مجموعه ایی از آرایه ها رو هم به عنوان ورودی دریافت کرد.applyو تمام ؛)پس تو این پست یاد گرفتیم که چطوری در object programming  در js با استفاده از call,bind,apply ، توابع رو فراخوانی کنیم.و دراخر اگه دوست دارید راجب موضوع خاصی بنویسیم لطفا تو کامنت ها برامون بگید، و همچنین معرفی ما به دوستاتون میتونه بهمون خیلی کمک کنه تا تیم هپی لرن رو بزرگتر کنیم.</description>
                <category>Happy Learn</category>
                <author>Happy Learn</author>
                <pubDate>Fri, 25 Jun 2021 17:54:08 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت دو تابع substr و substring</title>
                <link>https://virgool.io/cheyab-blog/difference-substr-substring-cb1eccchg9ac</link>
                <description>سلام سلام ما هپی لرن هستیم و شما دارید ششمین پست اموزشیمون رو از سایت ویرگول می‌خونید. در هپی لرن درباره‌ی موضوعات و مهارت هایی صحبت می‌کنیم که فارغ از این که شما با چه زبان برنامه نویسی دارید کد می‌زنید و یا چند ساله که دارید در حوزه برنامه نویسی فعالیت می‌کنید، میتونه بهتون کمک کنه تا در مسیر درست قرار بگیرید و سطح رضایتتون از کد زنی بالا ببرید. شما میتونید مقالات ما رو شنبه‌ها و جمعه ها از همین صفحه دنبال کنید. در جلسه سوم با این موضوع اشنا شدیم که اگه بخواهیم قسمتی از یک ارایه را جدا کنیم باید از توابع slice و splice استفاده کنیم،در این قسمت قراره با توابعی اشنا بشیم که برای جدا کردن قسمتی از رشته ها از انها استفاده میکنیم.تابع substr : این متود میتونه دو تا ورودی بگیره، ورودی اول ایندکس شروع و ورودی دوم تعداد کاراکتری که قراره جدا بشه. خروجی هم میاد اون بخش از رشته رو که در ورودی مشخصاتشو معلوم کردیم بهمون برمیگردونه.مثالی از substrدر مثال اول خروجی ما میشه اون بخش از رشته که از ایندکس 1 شروع شده و طولش برابر با 4 هست. در مثال دوم چون ما به این تابع یک ورودی دادیم خروجی از ایندکس شروع تا اخر رشته است.نکته ای که جالب اینه که ما میتونیم به ورودی اول substr عددهای منفی بدیم. ایندکس های منفی از اخر رشته یا ارایه شروع میشن، مثلا 1- نشون دهنده اخرین کارکتره و 2- دومین کاراکتر از اخرو نشون میده.تابع substring :این تابع هم همانند تابع substr میتونه دوتا ورودی بگیره که ورودی اول ایندکس شروع ولی ورودی دوم ایندکس پایانی هست و خروجی یک رشته که از ایندکس که به عنوان ورودی اول دادیم شروع و تا ایندکس پایانی ادامه داره:)(بله! کارکتر با ایندکس پایانی در رشته نیست)مثالی از تفاوت substr  و substringیه تفاوت دیگه بین substr و substring اینه که ما در substring برخلاف متود substr نمیتونیم ایندکس منفی بدیم و اگر ایندکس منفی بدیم جاوااسکریپ اون مقدار منفی با صفر جایگزین میکنه.شاید حالا احساس کنید که هیچ تفاوتی بین تابع slice (تابع slice برای رشته ها هم بکار میره) و substring وجود نداره و دو تابع دارند یه کارو انجام میدن! اما خوبه که بدونید در موارد زیر باهم متفاوتند:1) در تابع substring اگر ورودی اول بزرگتر از ورودی اول باشه (یعنی ایندکس شروع بزرگتر از ایندکس پایانی باشه!) جاوا اسکریپت جای این دوتا ورودی عوض میکنه اما در تابع slice در چنین شرایطی به ما یک رشته خالی یا همون &quot;&quot; برمیگردونه!2) یه تفاوت دیگه عملکرد متفاوت این دوتابع با ورودی های منفیه، همین طور که گفتیم اگه به تابع substring ورودی منفی بدیم، مقدارش با صفر جایگزین میشه اما عملکرد تابع slice همانند substr هست و ورودی منفی نشون دهنده اینه که شمارش ما از انتها رشته اغاز شده است. خوب امیدورام دیگه تفاوت بین اینارو متوجه شده باشید و دراخر اگه دوست دارید راجب موضوع خاصی بنویسیم لطفا تو کامنت ها برامون بگید، و همچنین معرفی ما به دوستاتون میتونه بهمون خیلی کمک کنه تا تیم هپی لرن رو بزرگتر کنیم.</description>
                <category>Happy Learn</category>
                <author>Happy Learn</author>
                <pubDate>Sat, 12 Jun 2021 17:33:25 +0430</pubDate>
            </item>
                    <item>
                <title>hoisting و use strict در جاوا اسکریپت</title>
                <link>https://virgool.io/coderlife/hoisting-and-use-strict-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-tmwcqmvqk09p</link>
                <description>سلام سلام ما هپی لرن هستیم و شما دارید پنجمین  پست آموزشیمون رو از سایت ویرگول می‌خونید.در هپی لرن درباره‌ی موضوعات و مهارت هایی صحبت می‌کنیم که فارغ از این که شما با چه زبان برنامه نویسی دارید کد می‌زنید و یا چند ساله که دارید در حوزه برنامه نویسی فعالیت می‌کنید، میتونه بهتون کمک کنه تا در مسیر درست قرار بگیرید و سطح رضایتتون از کد زنی بالا ببرید. شما میتونید مقالات ما رو شنبه‌ها و جمعه ها از همین صفحه دنبال کنید. یکی از چیزهای عجیب غریب توی جاوا اسکریپت، hoisting هست. هنگام استفاده از var، متغیرها را میتونیم قبل از تعریف کردن،استفاده کنیم. خوب ، می دونم ، برای هر کسی که به هر زبان برنامه نویسی غیر از JavaScriptبرنامه نویسی کرده باشه ، فوق العاده عجیب به نظر می رسه. آنچه اتفاق می افتد این است که ، تمام تعریف متغیرهایی که با استفاده از varانجام می شوند &quot;hoisted&quot;میشوند و یا در بالای دامنه فعلی قرار می گیرند.بیاید چنتا مثال باهم ببینیمhoisting in JSبرای مثال اول ، ما به عنوان خروجی خطایی یا undefinedدریافت نمی کنیم ، زیرا var x در بالا hoistedمی شود و اینطوری JS متوجه میشه که متغیر اون بالا تعریف شده.نکته!hoisting ،،فقط برا تعریف متغیر کار میکنه و برای initialize کردن کار نمیده.به مثال زیر توجه کنید.hoisting in JS hoisting in JS تو مثال بالا هم x تعریف شده و hoisting  برای اون کار میکنه اما initialize  نشده و برای همین تو خروجی  undefined میده .برای تعریف متغیر با let  و const  این موضوع یعنی همون hoisting  مطرح نیست.اگر یادتون باشه تو پست آموزشی اولمون هم گفتیم که function expression  ها hoisting براشون کار نمیده.علاوه بر این،class  ها هم توی جاوا اسکریپت،hoisting  براشون کار نمیده.پرهیز از hoisting درسته که hoisting فانه و شاید کارِ تعریف متغیر ها رو یه ذره آسون کنه اما ممکنه خیلی جاها برامون دردسر درست کنه و برا همین برای چشم پوشی از hoisting  میتونیم کارهای زیر رو انجام بدیم:1- میتونیم از strict mode  استفاده کنیم . یعنی وقتی میخوایم کد بنویسیم اون بالای صفحه ادیتورمون بنویسیم:“use strict”این strict mode اجازه نمیده که از متغیری که هنوز تعریف نکردیم،استفاده کنیم.2- با استفاده از const  و let  تعریف متغیر رو انجام بدیم.همونطور که گفتیم hoisting  برای این دوتا کار نمیکنه و برا همین حتی اگرم بخوایم نمیتونیم از یه متغیر قبل از اینکه تعریف بشه استفاده کنیم.3- سومین روش و شاید راحت ترین روش اینه که کار خودمون راحت کنیمو  همه متغیرها رو اون بالا تعریف کنیم :)امیدوارم مطالب این پست به دردتون خورده باشه و دراخر اگه دوست دارید راجب موضوع خاصی بنویسیم لطفا تو کامنت ها برامون بگید، و همچنین معرفی ما به دوستاتون میتونه بهمون خیلی کمک کنه تا تیم هپی لرن رو بزرگتر کنیم.</description>
                <category>Happy Learn</category>
                <author>Happy Learn</author>
                <pubDate>Fri, 11 Jun 2021 18:25:54 +0430</pubDate>
            </item>
                    <item>
                <title>بررسی توابع split, splice, slice</title>
                <link>https://virgool.io/@happylearnmz/difference-split-splice-slice-nkjp4hx0acu9</link>
                <description>سلام سلام ما هپی لرن هستیم و شما دارید چهارمین پست اموزشیمون رو از سایت ویرگول می‌خونید.در هپی لرن درباره‌ی موضوعات و مهارت هایی صحبت می‌کنیم که فارغ از این که شما با چه زبان برنامه نویسی دارید کد می‌زنید و یا چند ساله که دارید در حوزه برنامه نویسی فعالیت می‌کنید، میتونه بهتون کمک کنه تا در مسیر درست قرار بگیرید و سطح رضایتتون از کد زنی بالا ببرید. شما میتونید مقالات ما رو شنبه‌ها و جمعه ها از همین صفحه دنبال کنید.موضوع این قسمت بررسی توابع split, splice, slice:خوب به احتمال زیاد اسم این توابع را شنیدید ولی ممکنه براتون سخت باشه که تفاوت و کاربردهای اینارا متوجه بشید. در این بخش قراره این تابع هارو توضیح بدیم و ازش چند تا مثال کاربردی ببینیم.split: یکی از تابع هایی که هنگام استفاده از رشته ها باهاش خیلی سروکار داریم split، این متود یه ورودی میگیره (ورودیمون میتونه هر کاراکتری با هر تعدادی باشه)  و رشته رو براساس ورودی یا همون الگومون تقسیم بندی میکنه و به زیر رشته ها تبدیل میکنه و در اخر به ما یک ارایه برمیگردونه که این ارایه از همین زیر رشته ها به وجود اومدهمثالی از splitدر مثال بالا به ترتیب رشته ما براساس &quot;,&quot;و space تقسیم بندی شده است. اگه نتونیم براساس ورودی، رشته رو به زیر رشته تبدیل میکنیم(مثلا ورودی اصلا تو رشتمون نباشه) مقدار خروجی یک ارایه تک عضویه که عضو اول همون رشتمون بدون هیچ تغییری!خوب این تابع میتونه یه ورودی دیگه هم بگیره، ورودی دوم طول ارایه برگشتی بهمون میده.ورودی دوم در split طول ارایه مشخص میکنهدر مثال بالا وقتی به عنوان ورودی دوم عدد یک رو دادیم، بهمون فقط happy رو برگردونده چون مشخص کردیم طول ارایه برگشتی 1 باشه و فقط یه عضو داشته باشه.میدونستی که میتونیم به عنوان ورودی از RegExp یا همون عبارت های باقاعده هم استفاده کنیم؟ البته اگه درباره RegExp اطلاعی ندارید نگران نباشید قراره در قسمت های اینده راجبش صحبت کنیم:)تابع بعدی splice : این تابع برای حذف واضافه کردن به یک ارایه استفاده میشه.عملیات حذف به کمک spliceمثالی از spliceدو تا ورودی اول به ما کمک میکنه که بتونیم عملیات حذف رو انجام بدیم. ورودی اول نشون دهنده ایندکس (index) و مشخص میکنه از کدوم عنصر قصد داریم تغیراتمون اعمال کنیم (یادمون باشه که درجاوا اسکریپت ایندکس اولین ایتم 0 و ایتم های بعدی به ترتیب،شماره ایندکسشون یکی زیاد میشه!) ورودی دوم هم نشون دهنده این که چند تا ایتم ها قراره حذف بشندحالا اگه ورودی دوم رو ندیم چه اتفاقی میفته؟ جاوا اسکریپت میاد به طور پیش فرض عملیات حذف از ایندکس شروعی که معلوم کردیم (ورودی اولمونه دیگه) تا اخر ارایه انجام میده. خوب حالا اگه خواستیم به ارایه اضافه کنیم باید چیکار کنیم؟ ورودی ها بعدی نشون دهنده این هستند وقتی ایتم ها حذف بشند چه ایتم هایی بجاشون اضافه بشند.عملیات اضافه کردن با spliceدر مثال بالا قسمت اول می‌بینیم که از ایتم اول ارایه arr حذف کردیم و &#x27;Code&#x27; را جایگزینش کردیم،در مثال دوم ایتمی از ارایه arr2 حذف نکردیم و به ابتدای ارایه دو ایتم اضافه کردیم.حتما توجه کنیم که تابع splice تعییرات رو روی ارایه اصلی انجام میدهو تابع اخر که قراره راجبش بگیم: slice: فرض کنید قصد داریم چند تا عنصر از آرایمون حذف کنیم با این تفاوت که میخواهیم ارایه اصلیمون تغییری نکنه (پس نمیتونیم از متود splice استفاده کنیم!) برای این کار از متود slice کمک میگیریم.همینطور که از اسمش پیداست این تابع میاد قسمتی از ارایه رو جدا کرده و بهمون برمیگردونه . بدون این که رو ارایه اصلی تاثیر بذاره. ورودی اول همون  ایندکس شروعمون و ورودی دوم هم ایندکس پایانی هست و خروجی یک ارایه از ایتم با ایندکس شروع که مشخص کردیم تا سر ایتم با ایندکس پایانیه:)(بله! خود ایتم پایانی نیست)مثالی از تابع sliceدر تابع slice، مانند تابع قبلی اگه ورودی دوم رو ندیم به صورت خودکار خروجی از ایندکس شروع تا انتها در نظر میگیره.میدونستی اگه اصلا به تابع slice هیچی ورودی ندیم کل ارایه بهمون برمیگردونه؟ در حقیقت همه اینا باهم برابرند:
arr.slice(0,arr.length) 
arr.slice(0)
()arr.sliceخوب امیدورام دیگه تفاوت بین اینارو متوجه شده باشید و دراخراگه دوست دارید راجب موضوع خاصی بنویسیم لطفا تو کامنت ها برامون بگید، و همچنین معرفی ما به دوستاتون میتونه بهمون خیلی کمک کنه تا تیم هپی لرن رو بزرگتر کنیم.</description>
                <category>Happy Learn</category>
                <author>Happy Learn</author>
                <pubDate>Sat, 05 Jun 2021 10:02:21 +0430</pubDate>
            </item>
                    <item>
                <title>انواع داده ها در جاوا اسکریپت</title>
                <link>https://virgool.io/coderlife/data-types-javascript-q3jlobucskqi</link>
                <description>سلام سلام ما هپی لرن هستیم و شما دارید سومین پست آموزشیمون رو از سایت ویرگول می‌خونید.در هپی لرن درباره‌ی موضوعات و مهارت هایی صحبت می‌کنیم که فارغ از این که شما با چه زبان برنامه نویسی دارید کد می‌زنید و یا چند ساله که دارید در حوزه برنامه نویسی فعالیت می‌کنید، میتونه بهتون کمک کنه تا در مسیر درست قرار بگیرید و سطح رضایتتون از کد زنی بالا ببرید. شما میتونید مقالات ما رو شنبه‌ها و جمعه ها از همین صفحه دنبال کنید.موضوع این پست انواع داده ها در جاوا اسکریپت (Data Types):قبل از این که این بحثو شروع کنیم قصد داریم با تابع typeof اشنا بشیم. این تابع یه ورودی میگیره و نوع اون رو برامون مشخص میکنه. در ادامه از typeof مثال‌های زیادی می‌بینیم.خوب بریم سراغ انواع داده ها:1) Number : همه عددهایی که باهاشون سروکار داریم تو این دسته قرار می‌گیرن برای مثال 12، 4e-8 ، -873، 7.8 همه از نوع number هستند.مثال‌هایی از Numberهمین طور که در بالا می‌بینیم  NaN که مخففNot a Number هست جزو Number به حساب میاد:)2) BigInt :این نوع داده برای نگهداری اعداد صحیح استفاده میشه پس اعداد اعشاری مثل 7.8  جزو BigInt به حساب نمیاد. معمولا از BigInt برای نگهداری اعداد خیلی بزرگ استفاده می‌کنند. خوب حالا اعداد خیلی بزرگ چه مقادیری هستند؟هر عددی که از مقدار اول یعنی 9007199254740991 بزرگتر باشه یا از مقدار 9007199254740991-  کوچکتر باشه بهش میگن اعداد بزرگ.3) String : استرینگ یا همون رشته ها یکی دیگر از انواع داده در جاوا اسکریپت هست. همه کاراکترها، کلمه ها و جمله ها جزو رشته ها هستند. یادمون باشه که رشته ها رو بین &#x27; &#x27; یا &quot; &quot; قرار بدیم. خوب یه چند تا مثال از رشته ها:مثال‌هایی از Stringرشته ها میتونن ترکیبی از اعداد و کاراکتر ها باشند مثل &quot; Happy Learn 1400&quot;4) Undefined: یک مقدار پیشفرض برای متغیرهایی هست که مقدار ندارن. یعنی موقع ساختن این متغیر بهش مقدار داده نشده.در اینجا ما name رو تعریف کردیم ولی بهش مقداری ندادیم پس نوع این داده undefined.5) Boolean : این نوع داده شامل true و false هست. از این نوع داده برای عبارت های شرطی بیشتر استفاده میکنیم. مثلا میگیم اگه این متغیر مقدارش true بود این کارو انجام بده .مثال‌هایی از booleanما میتونیم نوع های دیگه داده رو به Boolean تبدیل کنیم. برای این کار میتونیم از دو روش استفاده کنیم:1) از !! قبل داده و متغیرمون استفاده کنیم2) از تابع Boolean استفاده کنیم، این تابع یه مقداری رو میگیره و بهمون میگه مقداری که درسته (true) یا غلط (false).تبدیل به booleanخوب همین طور که داریم همه اعداد بجز صفر وقتی به Boolean تبدیل میشند مقدارشون برابر trueهست. همچنین همه رشته ها بجز رشته خالی (&quot;&quot;) مقدار true دارند. undefined و null  هنگامی که به boolean  تبدیل بشند مقدار false رو دارند.خوب اینم از دیتا تایپهای اصلی(primitive) جاوا اسکریپت، و بریم به عنوان مطلب پایانی با تفاوت == و === اشنا بشم ? در حقیقت قراره بدونیم که ایا a==b , a===b فرق داره یا نه؟عملگر == میاد چک میکنه ایا a و b مقدارهای یکسانی دارند یا نه اگه برابر بودند مقدار true برمیگردونه و درغیر این صورت بهمون false میدهو عملگر=== میاد چک میکنه که ایا علاوه بر این که a و b مقدارهای یکسانی دارند، از یک نوع دیتا تایپ هستند یا نه و با توجه به نتیجه بهمون true و false برمیگردونهبا توجه به نکته بالا 10==&quot;10&quot; برابره چون مقدار هردوشون برابر با 10 ولی 10===&quot;10&quot; برابر نیست چون با این  که مقدار هردوشون برابر با 10 ولی میدونیم که 10 از نوع دیتا تایپ number و &quot;10&quot; از نوع دیتا تایپ string و به همین علت مقدار خروجی false! . سعی کنیم در عبارت های شرطی از === استفاده کنیم تا مطمعن بشیم مقایسمون علاوه بر مقدار، تایپ هم چک میکنه و در ادامه، برناممون به باگی برنمیخورهحالا یه چند تا تمرین برای شما?! خروجی های کد های زیر را برامون کامنت کنید:)1) &amp;quotIran&amp;quot == &amp;quotiran&amp;quot
2) 12 + 3==&amp;quot15&amp;quot
3) undefined ==&amp;quot&amp;quot
4) &#039;hello&#039;==&amp;quothello&amp;quot
5) Boolean(0)===Boolean(&amp;quot&amp;quot)در اخر هم اگه دوست دارید راجب موضوع خاصی بنویسیم لطفا تو کامنت ها برامون بگید، و همچنین معرفی ما به دوستاتون میتونه بهمون خیلی کمک کنه تا تیم هپی لرن رو بزرگتر کنیم.</description>
                <category>Happy Learn</category>
                <author>Happy Learn</author>
                <pubDate>Sat, 29 May 2021 16:43:28 +0430</pubDate>
            </item>
                    <item>
                <title>functions در جاوا اسکریپت</title>
                <link>https://virgool.io/coderlife/functions-in-javascript-sbwfqzulsegj</link>
                <description>سلام سلام ما هپی لرن هستیم و شما دارید دومین پستمون رو از سایت ویرگول می‌خونید. ?خوش اومدید به اولین پست آموزشی هپی لرن :)تو این پست قراره یکی از سوال هایی که تو مصاحبه ها از افراد پرسیده میشه رو باهم بررسی کنیمپس ،بزن بریم?توابع در جاوا اسکریپت با کلیدواژه ی function تعریف میشن و دو نوع اصلی دارن:Function Declaration Function Expressionحالا بیاید دربارشون بیشتر بحث کنیم.!Function declarationکلا توابع با ساختار زیر تعریف میشن:function functionName(parameters) { 
// کد های مورد نظر شما برای اجرا در تابع}این دسته از توابع به صورت خودکار اجرا نمیشن. بلکه باید اون هارو  فراخوانی کنیم (همون صدا زدن خودمون) که انگلیسی ها بهش میگنinvoke کردن.ینی چجوری؟اینطوری :)const x = myFunction(4, 3);بریم سراغ نوع بعدی تعریف کردن توابعFunction Expressionیه راه دیگه برا تعریف توابع در جاوا اسکریپت، تعریف کردن اون ها از طریق expretion هست.یعنی این دسته از توابع تو یه متغیر ذخیره میشن .const functionName = function (parameters){
// کد های مورد نظر شما برای اجرا در تابع};حالا خروجی این ها رو چطوری میبینیم؟اینطوریMyfunction(4,3);❗راسی یه نکته بتون بگموقتی اینطوری توابع رو تعریف میکنید، باید اول تابع تعریف بشه و بعد زیر اون، از تابع استفاده کنید!!( مبحث hoisting  که شاید بعدا مفصل تر براتون بگیم)Arrow Functionاین دسته از توابع تازگیا به جاوا اسکریپت اضافه شدن و به ما کمک میکنند تا توابع رو به صورت خلاصه تری تعریف کنیم const functionName = (parameters) =&gt; {
// کد های مورد نظر شما برای اجرا در تابع};خب بریم سراغ روش بعدی تعریف توابع که اسمش هستSelf-Invoking  یعنی خودشون، خودشون رو فراخوانی میکنند و نیازی به صدا زده شدن و فراخوانی جداگانه نداشته باشنچطوری؟اینطوری:(function () {
// کد های مورد نظر شما برای اجرا در تابع;
})(); واما اخرین نوع از تعریف کردن توابع که باهم اینجا بررسی میکنم:Function() Constructorتوی این روش از Constructor استفاده میکنیم.ینی چطوری؟بزار با مثال بگیم این  یکیوconst myFunction = new Function(&amp;quotx&amp;quot, &amp;quoty&amp;quot, &amp;quotreturn x + y&amp;quot);خب مطلب ما به سر رسید ،هپی لرن به آخر نرسید?منتظر نظرات و پیشنهادات شما هستیم،شما هم منتظر پست های بعدی ما باشید?</description>
                <category>Happy Learn</category>
                <author>Happy Learn</author>
                <pubDate>Fri, 28 May 2021 18:04:21 +0430</pubDate>
            </item>
                    <item>
                <title>هپی لرن؟</title>
                <link>https://virgool.io/@happylearnmz/happy-learn-n5wywfhz6mtw</link>
                <description>سلام سلام ما هپی لرن هستیم و شما دارید اولین پستمون رو از سایت ویرگول می‌خونید.در هپی لرن درباره‌ی موضوعات و مهارت هایی صحبت می‌کنیم که فارغ از این که شما با چه زبان برنامه نویسی دارید کد می‌زنید و یا چند ساله که دارید در حوزه برنامه نویسی فعالیت می‌کنید، میتونه بهتون کمک کنه تا در مسیر درست قرار بگیرید و سطح رضایتتون از کد زنی بالا ببرید. شما میتونید مقالات ما رو شنبه‌ها و جمعه ها از همین صفحه دنبال کنید.موضوع این پست اشنایی با اعضای تیم:تیم هپی لرن از دونفر تشکیل شده ولی مطمعنا قراره به کمک شماها این تیم بزرگتر بشه^-^ما (&quot;مینا&quot; و &quot;زهرا&quot;) هر دو دانشجوی ترم ۶ کامپیوتر هستیم وعاشق حل چالش‌های مختلفیم. اگه دوست دارید راجب موضوع خاصی بنویسیم لطفا تو کامنت ها برامون بگید، و همچنین معرفی ما به دوستاتون میتونه بهمون خیلی کمک کنه تا تیم هپی لرن رو بزرگتر کنیم.منتظر دومین پست ما در روز جمعه از سایت ویرگول باشید:)</description>
                <category>Happy Learn</category>
                <author>Happy Learn</author>
                <pubDate>Sat, 22 May 2021 10:09:45 +0430</pubDate>
            </item>
            </channel>
</rss>