<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد کریمی</title>
        <link>https://virgool.io/feed/@MuhKarimi</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 20:37:20</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/13081/avatar/avatar.png?height=120&amp;width=120</url>
            <title>محمد کریمی</title>
            <link>https://virgool.io/@MuhKarimi</link>
        </image>

                    <item>
                <title>مروری بر ساختمان داده Map در جاوا اسکریپت</title>
                <link>https://virgool.io/@MuhKarimi/%D9%85%D8%B1%D9%88%D8%B1%DB%8C-%D8%A8%D8%B1-%D8%B3%D8%A7%D8%AE%D8%AA%D9%85%D8%A7%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-map-%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-h7o1rqp83al6</link>
                <description>آبجکت ها در جاوا اسکریپت نوع خاصی از پیاده‌سازی hash table می‌باشند که مقادیر در آن‌ها به صورت کلید-مقدار ذخیره می‌گردد. کلید منحصر به فرد می‌باشد و نوع داده آن از نوع string و یا symbol می‌باشد همچنین مقدار آن از هر نوع داده‌ای می‌تواند باشد.ساختمان داده Map تفریبا مانند آبجکت ها است اما با چند فرق، که در زیر به چند مورد اشاره شده است.گاهی ممکن است نیاز به آبجکتی داشته باشید که نوع داده کلید آن از انواع دیگر داده‌ها نیز بتواند استفاده کند. فرق اساسی آبجکت با Map در همین موضوع است که در Map کلید می‌تواند هر نوع داده‌ای باشد.در Mapکلید-مقدارها به ترتیب درج شدن قرار گرفته شده، اما در آبجکت نمی‌توان به این موضوع اطمنیان داشت.شی Map یک شی iterable می‌باشد و میتوان با استفاده از حلقه for…of بر روی آن پیمایش انجام داد. که در هر پیمایش مقدار [key,value] بر می‌گردد.ساختمان داده Map در سناریوهایی که شامل اضافه و حذف مکرر جفت‌های کلید-مقدار هستند، بهتر عمل می‌کند.برای تبدیل آبجکت به Json (serialization) و Json به آبجکت (parsing) پشتیبانی بومی وجود دارد در حالیکه برای Map همچین پشتیبانی وجود ندارد و باید آن را خودتان پیاده‌سازی کنید.در قطعه کد زیر نحوه ایجاد map را مشاهده می‌کنید.در قطعه کد زیر با اعمال تغییرات در map همچون درج، حذف،‌ بررسی وجود کلید،‌ حذف کلید- مقدار،‌ حذف کل کلید-مقدارها و دریافت تعداد عناصر در map را مشاهده می‌کنید.برای استفاده از حلقه‌ها بر روی map چهار method زیر را داریم.برای بررسی اینکه یک متغیر Map هست یا نه، نمی‌توان از typeof استفاده کرد چرا که استفاده از آن تنها آبجکت بودن متغیر را به ما می‌گوید و باید از دستور زیر استفاده کرد.</description>
                <category>محمد کریمی</category>
                <author>محمد کریمی</author>
                <pubDate>Sat, 07 Sep 2024 18:43:42 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی شش کتاب برای یادگیری جاوا اسکریپت</title>
                <link>https://virgool.io/@MuhKarimi/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%B4%D8%B4-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DA%A9%D8%AA%D8%A7%D8%A8-%D8%A8%D8%B1%D8%A7%DB%8C-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-wqwcwekh3ltz</link>
                <description>جاوا اسکریپت یک زبان برنامه نویسی همه کاره و قدرتمند است که نقش مهمی در دنیای توسعه وب دارد. جاوا اسکریپت که در ابتدا برای افزودن تعامل به صفحات وب استاتیک توسعه یافته بود، به یک زبان کامل تبدیل شده است که می تواند هم در سمت مشتری در مرورگرها و هم در سمت سرور از طریق محیط هایی مانند Node.js اجرا شود. چه در حال ساخت یک وب سایت ساده و چه یک برنامه وب پیچیده باشید، انعطاف پذیری و قابلیت های جاوا اسکریپت آن را به زبانی ضروری برای تسلط بر آن تبدیل می کند.خواندن یک کتاب جاوا اسکریپت مناسب می تواند چیزی بیش از درک سطحی برای شما فراهم کند. به شما دیدگاهی در مورد اصول اصلی زبان بدهد، و کمک کند تا از مشکلات رایج اجتناب کنید، همچنین کد کارآمد و قابل نگهداری بنویسید. اگر به دنبال اصلاح مهارت های موجود خود یا عمیقتر کردن درک خود در زبان جاوا اسکریپت هستید، کتاب مناسب می تواند منبع ارزشمندی برای درک بهتر شما از زبان جاوا اسکریپت باشد.در زیر به معرفی سه کتاب مناسب برای یادگیری جاوا اسکریپت میپردازیم و در پایان نیز از سه کتاب دیگر تنها نام میبریم.یک)Title: JavaScript The Definitive Guide Author: David Flanagan Publisher:  O&#x27;Reilly Media; 7th edition (June 23, 2020) Paperback:  704 pages این کتاب تقریباً هر جنبه ای از جاوا اسکریپت را پوشش می دهد، نسخه هفتم شامل جدیدترین ویژگی های جاوا اسکریپت است و این اطمینان را می دهد که خوانندگان در حال یادگیری جدیدترین شیوهها هستند. در این کتاب درک موضوعات پیچیده با توضیحات واضح و مثالهای عملی آسانتر شده است همچنین این کتاب مناسب برای مبتدیانی است که به دنبال یادگیری زبان از ابتدا هستند، و همچنین برای توسعه دهندگان با تجربه که به یک مرجع دقیق نیاز دارند. ماهیت جامع کتاب، در عین حال که یک نقطه قوت است، میتواند یک نقطه ضعف نیز باشد (۷۰۴ صفحه) ، ممکن است برای مبتدیانی که تازه با برنامه نویسی یا جاوا اسکریپت آشنا شده اند، طاقتفرسا باشد. اما چه در جاوا اسکریپت تازه کار باشید و چه یک توسعه دهنده با تجربه، این کتاب منبع ارزشمندی است که درک شما از زبان را افزایش می دهد و مهارت های کدنویسی شما را بهبود می بخشد.دو)Title: Eloquent JavaScript Author: Marijn Haverbeke Publisher:  No Starch Press; 3rd edition (December 4, 2018) Paperback:  472 pagesنوشتار کتاب به صورت واضح و مختصر است که خواندن مطالب را لذت بخشتر میکند. همچنین با تمرینها و پروژههای متعدد یادگیری عملی را تشویق میکند و مفاهیم تحت پوشش هر فصل را تقویت میکند. در حالی که این کتاب عمدتاً بر جاوا اسکریپت متمرکز است، اما فراتر از نوع زبان در مورد برخی مفاهیم برنامه نویسی صحبت میکند. نسخه سوم با ویژگیها و شیوههای مدرن جاوا اسکریپت به روز شده است. ممکن است خوانندگان مبتدی با پیشرفت کتاب، مطالب را چالش برانگیز بدانند. تمرینها میتوانند به خصوص دشوار باشند و مستلزم مهارتهای حل مسئله و پشتکار هستند. همچنین در حالی که کتاب طیف گستردهای از موضوعات را پوشش میدهد، به طور عمیق به موضوعات پیشرفته جاوا اسکریپت نمیپردازد. و ممکن است نیاز باشد که یادگیری خود را با منابع اضافی تکمیل کنید.سه)Title: Head First JavaScript Programming Authors: Eric Freeman, Elisabeth Robson Publisher:  O&#x27;Reilly Media; 2nd edition (September 24, 2024) Paperback:  660 pagesاین کتاب با در نظر گرفتن مبتدیان طراحی شده است، موضوعات پیچیده را به قطعات قابل درکتر تقسیم میکند و آنها را به روشی ساده توضیح میدهد. استفاده کتاب از نمودارها و تصاویر درک مفاهیم پیچیده را به ویژه برای یادگیرندگان بصری آسانتر میکند. گنجاندن پازلها، تمرینها و آزمونها خوانندگان را فعالانه درگیر میکند و به تقویت مطالب کمک میکند. همچنین نویسندگان از مثالهای عملی و واقعی استفاده میکنند تا نشان دهند که چگونه جاوا اسکریپت در توسعه وب استفاده میشود و محتوا را مرتبطتر و کاربردیتر میکنند. در حالی که این کتاب برای مبتدیان عالی است، ممکن است برای توسعه دهندگان متوسط یا پیشرفتهای که به دنبال کشف موضوعات پیچیدهتر جاوا اسکریپ هستند، عمق کافی را ارائه نکند.چهار)Title: JavaScript from Beginner to Professional Authors: Laurence Lars Svekis, Maaike Van Putten, Rob Percival Publisher:  Packt Publishing; 1st edition (December 15, 2021) Paperback:  546 pagesپنج)Title: JavaScript All-in-One For Dummies Author: Chris Minnick Publisher:  For Dummies; 1st edition (May 9, 2023) Paperback:  816 pagesشش)Title: Absolute Beginner&#x27;s Guide to Javascript Author: Kirupa Chinnathambi Publisher:  Pearson; 3rd edition (November 5, 2022) Paperback:  624 pages</description>
                <category>محمد کریمی</category>
                <author>محمد کریمی</author>
                <pubDate>Sun, 01 Sep 2024 04:04:13 +0330</pubDate>
            </item>
                    <item>
                <title>انواع داده در جاوااسکریپت</title>
                <link>https://virgool.io/@MuhKarimi/%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%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-fnujaj6ulig7</link>
                <description>جاوااسکریپت یک زبان با نوع داده پویا (Dynamic Data Type) است این عبارت یعنی شما نیاز ندارید که به طور مشخص نوع داده یک متغیر را در زمان تعریف آن مشخص کنید و برنامه به صورت خودکار نوع داده را از مقدار انتسابی به متغیر در زمان اجرا متوجه می‌شود.همچنین جاوااسکریپت یک زبان با نوع داده ضعیف (weakly type) است، یعنی زبان در محاسبات با نوع داده‌های نامربوط به هم، به صورت خودکار اقدام به تبدیل نوع داده می‌کند و خطای نوع داده ایجاد نمی‌شود.انواع داده هاجاوا اسکریپت دارای چندین نوع داده است که به دو دسته تقسیم می‌شوندنوع اولیه (primitive type)نوع مرجع (reference type)انواع اولیه (primitive type)رشته (String)، نشان دهنده دنباله ای از کاراکترها است. به عنوان مثال: &quot;Hello&quot;عدد (Number): هم اعداد صحیح و هم اعداد اعشاری را نشان می دهد. مثال: 54 یا 1.17عدد بزرگ (BigInt): برای نمایش اعداد صحیح با بزرگی دلخواه می‌باشد.بولین (Boolean): نوع داده‌ای است که تنها یکی از دو مقدار true یا false را می‌گیرد.نوع Null: تنها مقدار null را می‌تواند بپذیرد که معمولا نشان دهنده عدم وجود شی می‌باشد.نوع Undefined: تنها مقدار undefined را می‌تواند بپذیرد که معمولا نشان دهنده عدم وجود مقدار می‌باشد.نماد (Symbol): یک مقدار منحصر به فرد، که اغلب به عنوان کلید برای ویژگی های شی استفاده می‌شود.نوع مرجع (reference type)شی (Object): مجموعه ای از ویژگی‌ها، که در آن هر ویژگی یک جفت کلید-مقدار است که کلید از نوع رشته و یا symbol است و مقدار می‌تواند هر نوع داده‌ای باشد.آرایه‌ها، توابع و ... از نوع Object می‌باشند.</description>
                <category>محمد کریمی</category>
                <author>محمد کریمی</author>
                <pubDate>Sat, 24 Aug 2024 18:04:39 +0330</pubDate>
            </item>
                    <item>
                <title>تفاوت var و let و const در جاوا اسکریپت</title>
                <link>https://virgool.io/@MuhKarimi/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-var-%D9%88-let-%D9%88-const-%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-l4mhkpmec8fl</link>
                <description>یکی از جنبه های اساسی زبان‌های برنامه‌نویسی، نحوه تعریف و مدیریت متغیرها است. در جاوا اسکریپت، از سه کلمه کلیدی let, var و const برای تعریف متغیرها استفاده می‌شود که هر کدام دارای ویژگی ها و رفتارهای متمایز هستند. درک تفاوت بین این کلمات کلیدی برای نوشتن کد کارآمد و بدون اشکال ضروری است. برای درک بهتر این تفاوتها، ابتدا به بررسی سه مفهوم مهم scope, hoisting, temporal dead zone(TDZ) می‌پردازیم.مفهوم scopeقسمتی از برنامه که به متغیر دسترسی داریم و می‌تونیم از آن استفاده کنیم. در جاوااسکریپت سه نوع دامنه دسترسی داریم.دامنه سراسری (Global Scope)، در هر جایی از کد قابل دسترسی است.دامنه تابع (Function Scope)، تنها در محدوده‌ی تابعی که متغیر درون آن تعریف شده است قابل دسترسی است.دامنه بلوک (Block Scope)، تنها در داخل بلاک قابل دسترسی است که محدوده آن با { } مشخص می‌گردد.مفهوم Hoistingرفتاری در جاوااسکریپت است که متغیرها و تابع‌های تعریف شده (function declaration) را در فاز ایجاد برنامه اجرایی، به بالای دامنه خود می‌آورد.مفهوم temporal dead zone (TDZ)رفتاری در جاوااسکریپت هست که متغیر از ابتدای دامنه دسترسی خود تا زمان تعریف آن (declaration) در وضعیت بدون مقدار اولیه نگه داشته می‌شود و اجازه دسترسی و استفاده از متغیر داده نمی‌شود و در صورت استفاده از متغیر در این ناحیه با خطای ReferenceError مواجه می‌گردیم.کلمه کلیدی varدامنه دسترسی متغیری که با var تعریف می‌شود function scope هست یعنی اگر درون تابع تعریف گردد محدوده دسترسی به درون آن تابع محدود می‌گردد و اگر خارج از تابع تعریف گردد در همه جای برنامه قابل دسترسی است.متغیری که با var تعریف می‌شود به بالای دامنه دسترسی خود برده می‌شود (hoisting) و مقدار اولیه undefined به خود می‌گیرد و می‌توان قبل از تعریف (declaration) به آن دسترسی داشت.می‌توان آن را تعریف کرد (declaration) و بعدا مقداردهی اولیه انجام داد.می‌توان آن را دوباره تعریف کرد (redeclaration).می‌توان به آن دوباره مقدار داد (reassignment).اگر در خارج از تابع تعریف شود به عنوان یک ویژگی متغیر سراسری window به آن دسترسی داریم.کلمه کلیدی letدامنه دسترسی متغیری که با let تعریف میشه block-scope هست یعنی ابتدا و انتهای محدوده دسترسی آن با { } مشخص می‌گردد.متغیری که با let تعریف می‌شود به بالای دامنه دسترسی خودش برده می‌شود (hoisting) اما چون با let تعریف شده است رفتار TDZ در جاوااسکریپت سبب می‌شود که متغیر مقدار اولیه نگیرد و تا زمان تعریف قابل دسترس نباشد.می‌توان آن را تعریف کرد (declaration) و بعدا مقداردهی اولیه انجام داد.نمی‌توان آن را دوباره تعریف کرد (redeclaration).می‌توان به آن دوباره مقدار داد (reassignment).کلمه کلیدی constویژگیهای استفاده از const مانند let هست با  دو تفاوتدر هنگام تعریف متغیر با const باید مقدار آن مشخص گردد.نمی‌توان متغیری را که با const تعریف شده، دوباره مقداردهی کرد.</description>
                <category>محمد کریمی</category>
                <author>محمد کریمی</author>
                <pubDate>Sat, 17 Aug 2024 15:52:53 +0330</pubDate>
            </item>
            </channel>
</rss>