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

ProGraphs = Programming + Graphics
Download Telegram
اگر هردوی این rulesetها به یک عنصر اعمال شوند، متن این عنصر چه رنگی خواهد بود؟

#interviewquestion #css

@ProGraphs
ProGraphs
اگر هردوی این rulesetها به یک عنصر اعمال شوند، متن این عنصر چه رنگی خواهد بود؟ #interviewquestion #css @ProGraphs
جواب: green

برای تعیین رنگ عنصر،‌ابتدا specificity دو انتخابگر را تعیین می‌کنیم:
اگر 10 امتیاز برای هر کلاس، و 100 امتیاز برای هر id اضافه کنیم، امتیاز دو انتخابگر به این ترتیب تعیین می‌شود:

انتخابگر اول: 100
انتخابگر دوم: 110

همانطور که می‌بینید امتیاز انتخابگر دوم بیشتر است! اما چرا ruleset اول اعمال شد؟
مشکل اینجاست که امتیاز انتخابگرها به صورت دهدهی محاسبه نمی‌شود و اولویت انتخابگر id بالاتر از کلاس است. در نتیجه هیچ تعدادی از کلاس‌ها نمی‌توانند یک id را override کنند!
پس بهتر است امتیاز انتخابگرها را به این شکل تعیین کنیم:

انتخابگر اول: 0, 0, 1, 0
انتخابگر دوم: 0, 11, 0, 0
چون تعداد idها در انتخابگر اول بیشتر است، پس قطعا ruleset اول اعمال می‌شود و رنگ متن عنصر green خواهد بود.
🔺با سایت زیر تصاویر خود را بدون کاهش کیفیت فشرده کنید. ✌🏻

https://squoosh.app

#link #imagecompressor

@ProGraphs
آیا در این کد می‌توانیم در خط 6 به متغیر گلوبال دسترسی پیدا کنیم؟

#interviewquestion #js

@ProGraphs
ProGraphs
آیا در این کد می‌توانیم در خط 6 به متغیر گلوبال دسترسی پیدا کنیم؟ #interviewquestion #js @ProGraphs
جواب: خیر!

با توجه به نحوه‌ی عملکرد lexical scope، همیشه ابتدا داخل خود تابع دنبال یک متغیر می‌گردیم. بنابراین همیشه متغیر proGraphs داخل تابع پیدا می‌شود و به متغیر گلوبال دسترسی پیدا نمی‌کنیم.
این شرایط با عنوان variable shadowing شناخته می‌شود.

از طرفی متغیرهایی که با let تعریف می‌شوند، به آبجکت global اضافه نمی‌شوند. یعنی window.proGraphs وجود نخوهد داشت و از راه غیر lexical هم به متغیر گلوبال دسترسی نداریم!

https://en.wikipedia.org/wiki/Variable_shadowing
🔺ایجاد افکت‌هایی این چنینی بر روی عکس با سایت زیر 👇🏻

https://duotone.shapefactory.co/

#link #duotone

@ProGraphs
This media is not supported in your browser
VIEW IN TELEGRAM
Simple & light weight vanilla javascript plugin to create smooth & beautiful animations when you scroll! 😎✌🏻

https://github.com/alexfoxy/laxxx

#link #js #plugin #scroll

@ProGraphs
تبدیل نوع داده‌ها (coercion) در جاوااسکریپت (قسمت دوم):

در مطلب قبلی، تبدیل نوع داده‌ها به string را بررسی کردیم و نحوه‌ی تبدیل آبجکت‌ها به string را هم دیدیم.

حالا می‌خواهیم نحوه‌ی تبدیل آبجکت‌ها به primitive را دقیق‌تر بررسی کنیم (نه فقط string):

❗️وقتی سعی می‌کنیم یک آبجکت را به یک نوع داده مثل number, string تبدیل کنیم (که نوع داده‌های primitive هستند)، باید ابتدا آبجکت به primitive تبدیل شود. اما چطور؟

1- اگر متدی به نام valueOf در آبجکت وجود داشته باشد و خروجی این متد از نوع primitive باشد، همین متد صدا می‌شود:
var obj = {
valueOf() {
return 2;
}
};
obj -> 2
2- اگر از مرحله‌ی قبلی مقدار primitive تعیین نشود، متد toString صدا می‌شود:
var obj = {
toString() {
return "hi";
}
};
obj -> "hi"
دقت کنید که این مراحل، توسط خود جاوااسکریپت و زمانی که می‌خواهیم یک آبجکت را به یک نوع داده‌ی primitive مثل string تبدیل کنیم انجام می‌شود.

❗️نکات تکمیلی:
- همانطور که در مطلب قبلی هم دیدیم، متدهای valueOf و toString در Object.prototype تعریف شده‌اند. بنابراین اگر خودمان این متدها را داخل یک آبجکت تعریف نکنیم، متدهای داخل Object.prototype برای تبدیل به primitive صدا می‌شوند (به مطالبی که راجع به prototype chain منتشر کردیم مراجعه کنید).

- گاهی ترتیب صدا شدن دو متد valueOf و toString برعکس چیزی است که در این مطلب دیدیم. دلیل این موضوع را در مطالب بعدی بررسی می‌کنیم. اما فعلا اهمیتی ندارد 😅

#quicktip #js

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

#interviewquestion #js

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

در چند مطلب اخیر، قسمتی از مفاهیم coercion در جاوااسکریپت را بررسی کردیم. حالا نتیجه‌ی این کد را با استفاده از این مفاهیم بررسی می‌کنیم:

* در خط 9 یک آبجکت را با یک عدد مقایسه می‌کنیم. اگر از عملگر === استفاده شده بود، قطعا نتیجه‌ی شرط false بود!
اما چون از عملگر == استفاده شده، آبجکت proGraphs به عدد تبدیل می‌شود تا مقایسه انجام شود.

**‌حالا باید آبجکت را به عدد تبدیل کنیم. اما قبل از تبدیل آبجکت به عدد، باید آبجکت به primitive تبدیل شود!
برای تبدیل آبجکت به primitive، متد valueOf داخل آبجکت صدا می‌شود. خروجی این متد عدد 20 است پس در نهایت آبجکت proGraphs به عدد 20 تبدیل شد و نتیجه‌ی شرط true است!
تفاوت function و method و constructor در جاوااسکریپت چیست؟

#interviewquestion #js

@ProGraphs
بزرگترین مجموعه از تصاویر transparent png clipart رایگان

https://flyclipart.com/

#link #transparent #png

@ProGraphs