ProGraphs
818 subscribers
216 photos
6 videos
11 files
377 links
مجموعه مطالبی از برنامه‌نویسی وب و گرافیک

ProGraphs = Programming + Graphics
Download Telegram
این قطعه کد برای چک کردن اینکه یک متغیر آبجکت است یا نه نوشته شده است.
آیا مشکلی در این کد می‌بینید؟ روش بهتری برای این کار می‌شناسید؟

#interviewquestion #js

@ProGraphs
🔺طرح‌های این مدلی رو از سایت زیر دانلود کنین. 🎊

https://www.drawkit.io/

#link #illustration

@ProGraphs
ProGraphs
این قطعه کد برای چک کردن اینکه یک متغیر آبجکت است یا نه نوشته شده است. آیا مشکلی در این کد می‌بینید؟ روش بهتری برای این کار می‌شناسید؟ #interviewquestion #js @ProGraphs
جواب:

عملگر typeof از قسمت‌هایی در جاوااسکریپت هست که خلاقیت فوق‌العاده‌ای در طراحی آن به کار رفته و سعی شده در شرایط مختلف ما را غافلگیر کند 😄.

کد این سوال می‌تواند در این شرایط برخلاف تصور ما عمل کند:

1- عملگر typeof مقدار null را به عنوان یک آبجکت تشخیص می‌دهد! در واقع این موضوع به عنوان یک باگ در جاوااسکریپت پذیرفته شده است.
typeof null; // "object"

2- آرایه‌ها در جاوااسکریپت نوعی از آبجکت‌ها هستند و درواقع subtype آبجکت محسوب می‌شوند. به همین دلیل عملگر typeof (به درستی) مقادیر از نوع آرایه را، به عنوان آبجکت شناسایی می‌کند.
typeof [1, 2]; // "object"

3- توابع هم مانند آرایه‌ها، نوع خاصی از آبجکت‌ها هستند و subtype آبجکت محسوب می‌شوند.اما عملگر typeof مقادیر از نوع function را برخلاف آرایه‌ها، به عنوان خود "function" شناسایی می‌کند (و نه "object").
typeof function(){}; // "function"

اما آیا روش بهتری برای چک کردن نوع مقادیر وجود دارد؟
بله، روش‌هایی زیادی برای این کار وجود دارد که 2 مورد از آن‌ها را در این مطلب بررسی می‌کنیم:

1- این کد برای مقادیر null و آرایه‌ها و توابع false برمی‌گرداند و فقط برای آبجکت‌ها (و نه subtype های آن) true برمی‌گرداند:
(proGraphs !== null) && (proGraphs.constructor === Object)

2- یکی دیگر از روش‌های مفید برای چک کردن نوع داده‌ها استفاده از متد toString است:
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call([]); // [object Array]

اینکه هر کدام از این روش‌ها دقیقا چطور کار می‌کنند و هرکدام در چه شرایطی مناسب‌تر هستند را در مطالب جداگانه بررسی می‌کنیم.
🔺تصاویر و طرح‌های این سبکی رو از لینک زیر دانلود کنید. 😎

https://icons8.com/ouch

#link #vector #illustration

@ProGraphs
​​در مطالب قبلی با مفهوم Property Descriptor آشنا شدیم و فهمیدیم که مجموعه‌ای از ویژگی‌های یک پراپرتی هستند که رفتار آن پراپرتی را تعیین می‌کنند.

در این مطلب یکی از این ویژگی‌ها به نام writable را بررسی می‌کنیم.

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

به این ترتیب می‌توانیم پراپرتی‌هایی با مقادیر constant بسازیم (به کد داخل تصویر دقت کنید).

#quicktip #js

@ProGraphs
آیا شما function expressionها را نام گذاری می‌کنید؟
این کار چه فایده‌ای می‌تواند داشته باشد؟

#interviewquestion #js

@ProGraphs
🔺 ایمیل موقت ده دقیقه‌ای 🔟

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

https://10minutemail.com/

#link #email

@ProGraphs
🔺کد زدن با JS را در اپلیکیشن زیر، رایگان یاد بگیرید.👨🏻‍💻👩🏻‍💻

https://grasshopper.codes/

#link #app #application #learn #js

@ProGraphs
ProGraphs
آیا شما function expressionها را نام گذاری می‌کنید؟ این کار چه فایده‌ای می‌تواند داشته باشد؟ #interviewquestion #js @ProGraphs
جواب:

نام گذاری function expressionها 2 فایده مهم می‌تواند داشته باشد:

1- زمانی که برای یک FE نام انتخاب می‌کنیم، این نام داخل خود تابع قابل استفاده است (و به صورت گلوبال تعریف نمی‌شود).
به این ترتیب داخل تابع می‌توانیم به خود آن دسترسی داشته باشیم و این موضوع می‌تواند برای recursion و ... مفید باشد.

2- زمانی که یک کد را در حالت debug در مرورگر اجرا می‌کنیم، نام تابع در حال اجرا در قسمت call stack قابل مشاهده است. اما برای توابع بدون نام، نام تابع به عنوان anonymous نوشته می‌شود. و این موضوع می‌تواند دیباگ کردن کد‌های پیچیده را سخت‌تر کند.
🔺با لینک زیر به راحتی موکاپ موبایل بسازید. 📱

https://www.kapwing.com/mobile-mockup

#link #mockup

@ProGraphs
This media is not supported in your browser
VIEW IN TELEGRAM
با استفاده از live expression ها در گوگل کروم،‌می‌توانیم مقدار هر expression جاوااسکریپت و تغییرات آن را ببینیم!

#quicktip #devtools #js

@ProGraphs
با اجرای این کد چه مقداری در کنسول چاپ می‌شود؟

#interviewquestion #js

@ProGraphs
ProGraphs
با اجرای این کد چه مقداری در کنسول چاپ می‌شود؟ #interviewquestion #js @ProGraphs
جواب: true

می‌دانیم که در جاوااسکریپت نمی‌توانیم برای نام متغیرها از reserved wordها مانند class, null, ... استفاده کنیم.

اما متاسفانه undefined یک کلمه‌ی رزرو شده نیست و فقط یک پراپرتی read-only در آبجکت global/window است. بنابراین در هر scope به جز scope گلوبال می‌توانیم یک متغیر به نام undefined با مقدار دلخواه تعریف کنیم!

در این کد داخل تابع دو متغیر به نام‌های undefined و proGraphs با مقدار یکسان تعریف می‌کنیم و به این ترتیب نتیجه‌ی شرط true می‌شود.

دقت کنید که اگر کد را داخل یک تابع نمی‌نوشتیم، با error مواجه می‌شدیم چرا که پراپرتی undefined در scope گلوبال غیر قابل تغییر است.
🔺یه منبع خوب برای الهام گرفتن در طراحی وب به همراه قطعه کد هر اِلِمان

https://codemyui.com/

#link #ui #design #inspiration #codesnippet

@ProGraphs
🔺با این سایت پالت رنگی مورد نظرتون رو راحت‌تر انتخاب کنید.👌🏻

https://culrs.com/

#link #color #palette

@ProGraphs