This media is not supported in your browser
VIEW IN TELEGRAM
تو این سایت میتونید تعداد starهای پروژههای مختلف github رو در طول زمان ببینید ⭐️
https://star-history.t9t.io/
#link #github #graph
@ProGraphs
https://star-history.t9t.io/
#link #github #graph
@ProGraphs
تبدیل نوع دادهها (coercion) در جاوااسکریپت (قسمت اول):
چطور نوع دادههای مختلف در جاوااسکریپت به string تبدیل میشوند؟
❗️1-تقریبا همهی مقادیر primitive بدون تغییر خاصی به string تبدیل میشوند و حالت stringای آنها از پیش تعیین شده است:
همین! حالا مهم نیست که کجا، چطور و با کدام روش یک مقدار به string تبدیل میشود. در هر صورت از قوانینی که بررسی کردیم تبعیت میشود و خروجی coercion یکسان خواهد بود:
@ProGraphs
چطور نوع دادههای مختلف در جاوااسکریپت به string تبدیل میشوند؟
❗️1-تقریبا همهی مقادیر primitive بدون تغییر خاصی به string تبدیل میشوند و حالت stringای آنها از پیش تعیین شده است:
true -> "true"اما اعداد خیلی بزرگ و خیلی کوچک به صورت نمایی نمایش داده میشوند:
12 -> "12"
NaN -> "NaN"
null -> "null"
undefined -> "undefined"
10000000000000000000000 -> "1e+22"
❗️2- برای تبدیل آبجکتها به string، متد toString داخل آنها صدا میشود:var obj = {همچنین داخل Object.prototype، متدی به نام toString تعریف شده است. بنابراین اگر خودمان متد toString را داخل یک آبجکت تعریف نکنیم، متد Object.toString برای تبدیل به string صدا میشود (به مطالبی که راجع به prototype chain منتشر کردیم مراجعه کنید).
toString() {
return "proGraphs";
}
}
obj -> "proGraphs"
همین! حالا مهم نیست که کجا، چطور و با کدام روش یک مقدار به string تبدیل میشود. در هر صورت از قوانینی که بررسی کردیم تبعیت میشود و خروجی coercion یکسان خواهد بود:
String(true); // "true"
true + ""; // "true
...
#quicktip #js #coercion@ProGraphs
ProGraphs
تبدیل نوع دادهها (coercion) در جاوااسکریپت (قسمت اول): چطور نوع دادههای مختلف در جاوااسکریپت به string تبدیل میشوند؟ ❗️1-تقریبا همهی مقادیر primitive بدون تغییر خاصی به string تبدیل میشوند و حالت stringای آنها از پیش تعیین شده است: true -> "true" 12…
معمولا کسانی که با جاوااسکریپت میونه خوبی ندارند خیلی از قوانین coercion گله میکنند 😁
اگه از این افراد میشناسید، این مطلب رو براشون بفرستید!
از این به بعد هر هفته، تو یک مطلب، قوانین coercion برای یکی از نوع دادهها رو بررسی میکنیم.
اگه از این افراد میشناسید، این مطلب رو براشون بفرستید!
از این به بعد هر هفته، تو یک مطلب، قوانین coercion برای یکی از نوع دادهها رو بررسی میکنیم.
🔺لیستی از هر آنچه میتواند در تگ <head> قرار بگیرد. 👌🏻
https://github.com/joshbuchea/HEAD#recommended-minimum
#link #html #head
@ProGraphs
https://github.com/joshbuchea/HEAD#recommended-minimum
#link #html #head
@ProGraphs
GitHub
GitHub - joshbuchea/HEAD: A simple guide to HTML <head> elements
A simple guide to HTML <head> elements. Contribute to joshbuchea/HEAD development by creating an account on GitHub.
اگر هردوی این rulesetها به یک عنصر اعمال شوند، متن این عنصر چه رنگی خواهد بود؟
#interviewquestion #css
@ProGraphs
#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 خواهد بود.
برای تعیین رنگ عنصر،ابتدا specificity دو انتخابگر را تعیین میکنیم:
اگر 10 امتیاز برای هر کلاس، و 100 امتیاز برای هر id اضافه کنیم، امتیاز دو انتخابگر به این ترتیب تعیین میشود:
انتخابگر اول: 100
انتخابگر دوم: 110
همانطور که میبینید امتیاز انتخابگر دوم بیشتر است! اما چرا ruleset اول اعمال شد؟
مشکل اینجاست که امتیاز انتخابگرها به صورت دهدهی محاسبه نمیشود و اولویت انتخابگر id بالاتر از کلاس است. در نتیجه هیچ تعدادی از کلاسها نمیتوانند یک id را override کنند!
پس بهتر است امتیاز انتخابگرها را به این شکل تعیین کنیم:
انتخابگر اول: 0, 0, 1, 0
انتخابگر دوم: 0, 11, 0, 0
چون تعداد idها در انتخابگر اول بیشتر است، پس قطعا ruleset اول اعمال میشود و رنگ متن عنصر green خواهد بود.
Node.js security best practices
https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d
#link #article #node #security
@ProGraphs
https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d
#link #article #node #security
@ProGraphs
Medium
We’re under attack! 23+ Node.js security best practices
A curated list of 23 node security best practices with code examples and quotes from the top ranked blogs
🔺با سایت زیر تصاویر خود را بدون کاهش کیفیت فشرده کنید. ✌🏻
https://squoosh.app
#link #imagecompressor
@ProGraphs
https://squoosh.app
#link #imagecompressor
@ProGraphs
ProGraphs
آیا در این کد میتوانیم در خط 6 به متغیر گلوبال دسترسی پیدا کنیم؟ #interviewquestion #js @ProGraphs
جواب: خیر!
با توجه به نحوهی عملکرد lexical scope، همیشه ابتدا داخل خود تابع دنبال یک متغیر میگردیم. بنابراین همیشه متغیر proGraphs داخل تابع پیدا میشود و به متغیر گلوبال دسترسی پیدا نمیکنیم.
این شرایط با عنوان variable shadowing شناخته میشود.
از طرفی متغیرهایی که با let تعریف میشوند، به آبجکت global اضافه نمیشوند. یعنی window.proGraphs وجود نخوهد داشت و از راه غیر lexical هم به متغیر گلوبال دسترسی نداریم!
https://en.wikipedia.org/wiki/Variable_shadowing
با توجه به نحوهی عملکرد lexical scope، همیشه ابتدا داخل خود تابع دنبال یک متغیر میگردیم. بنابراین همیشه متغیر proGraphs داخل تابع پیدا میشود و به متغیر گلوبال دسترسی پیدا نمیکنیم.
این شرایط با عنوان variable shadowing شناخته میشود.
از طرفی متغیرهایی که با let تعریف میشوند، به آبجکت global اضافه نمیشوند. یعنی window.proGraphs وجود نخوهد داشت و از راه غیر lexical هم به متغیر گلوبال دسترسی نداریم!
https://en.wikipedia.org/wiki/Variable_shadowing
Wikipedia
Variable shadowing
a variable in an inner scope hiding an identically named variable in an outer scope
🔺ایجاد افکتهایی این چنینی بر روی عکس با سایت زیر ✨👇🏻
https://duotone.shapefactory.co/
#link #duotone
@ProGraphs
https://duotone.shapefactory.co/
#link #duotone
@ProGraphs
🔺 Typeform
- نظرسنجی و فرمساز آنلاین ✌🏻🥳
https://www.typeform.com
#link #survey #form #builder
@ProGraphs
- نظرسنجی و فرمساز آنلاین ✌🏻🥳
https://www.typeform.com
#link #survey #form #builder
@ProGraphs
Typeform
Typeform: People-Friendly Forms and Surveys
Build beautiful, interactive forms — get more responses. No coding needed. Templates for quizzes, research, feedback, lead generation, and more. Sign up FREE.
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
https://github.com/alexfoxy/laxxx
#link #js #plugin #scroll
@ProGraphs
تبدیل نوع دادهها (coercion) در جاوااسکریپت (قسمت دوم):
در مطلب قبلی، تبدیل نوع دادهها به string را بررسی کردیم و نحوهی تبدیل آبجکتها به string را هم دیدیم.
حالا میخواهیم نحوهی تبدیل آبجکتها به primitive را دقیقتر بررسی کنیم (نه فقط string):
❗️وقتی سعی میکنیم یک آبجکت را به یک نوع داده مثل number, string تبدیل کنیم (که نوع دادههای primitive هستند)، باید ابتدا آبجکت به primitive تبدیل شود. اما چطور؟
1- اگر متدی به نام valueOf در آبجکت وجود داشته باشد و خروجی این متد از نوع primitive باشد، همین متد صدا میشود:
❗️نکات تکمیلی:
- همانطور که در مطلب قبلی هم دیدیم، متدهای valueOf و toString در Object.prototype تعریف شدهاند. بنابراین اگر خودمان این متدها را داخل یک آبجکت تعریف نکنیم، متدهای داخل Object.prototype برای تبدیل به primitive صدا میشوند (به مطالبی که راجع به prototype chain منتشر کردیم مراجعه کنید).
- گاهی ترتیب صدا شدن دو متد valueOf و toString برعکس چیزی است که در این مطلب دیدیم. دلیل این موضوع را در مطالب بعدی بررسی میکنیم. اما فعلا اهمیتی ندارد 😅
#quicktip #js
@ProGraphs
در مطلب قبلی، تبدیل نوع دادهها به string را بررسی کردیم و نحوهی تبدیل آبجکتها به string را هم دیدیم.
حالا میخواهیم نحوهی تبدیل آبجکتها به primitive را دقیقتر بررسی کنیم (نه فقط string):
❗️وقتی سعی میکنیم یک آبجکت را به یک نوع داده مثل number, string تبدیل کنیم (که نوع دادههای primitive هستند)، باید ابتدا آبجکت به primitive تبدیل شود. اما چطور؟
1- اگر متدی به نام valueOf در آبجکت وجود داشته باشد و خروجی این متد از نوع primitive باشد، همین متد صدا میشود:
var obj = {2- اگر از مرحلهی قبلی مقدار primitive تعیین نشود، متد toString صدا میشود:
valueOf() {
return 2;
}
};
obj -> 2
var obj = {دقت کنید که این مراحل، توسط خود جاوااسکریپت و زمانی که میخواهیم یک آبجکت را به یک نوع دادهی primitive مثل string تبدیل کنیم انجام میشود.
toString() {
return "hi";
}
};
obj -> "hi"
❗️نکات تکمیلی:
- همانطور که در مطلب قبلی هم دیدیم، متدهای valueOf و toString در Object.prototype تعریف شدهاند. بنابراین اگر خودمان این متدها را داخل یک آبجکت تعریف نکنیم، متدهای داخل Object.prototype برای تبدیل به primitive صدا میشوند (به مطالبی که راجع به prototype chain منتشر کردیم مراجعه کنید).
- گاهی ترتیب صدا شدن دو متد valueOf و toString برعکس چیزی است که در این مطلب دیدیم. دلیل این موضوع را در مطالب بعدی بررسی میکنیم. اما فعلا اهمیتی ندارد 😅
#quicktip #js
@ProGraphs
ProGraphs
تبدیل نوع دادهها (coercion) در جاوااسکریپت (قسمت دوم): در مطلب قبلی، تبدیل نوع دادهها به string را بررسی کردیم و نحوهی تبدیل آبجکتها به string را هم دیدیم. حالا میخواهیم نحوهی تبدیل آبجکتها به primitive را دقیقتر بررسی کنیم (نه فقط string): ❗️وقتی…
حالا که دانشمون از تبدیل آبجکت به primitive کاملتر شده، دوباره به مطلب قبلی برگردید:
https://t.me/ProGraphs/434
تو قانون دوم گفتیم که برای تبدیل به string، متد toString صدا میشه. حالا مراحل کاملتر (valueOf و toString) و دلیل صدا شدن این متد رو بهتر درک میکنیم!
https://t.me/ProGraphs/434
تو قانون دوم گفتیم که برای تبدیل به string، متد toString صدا میشه. حالا مراحل کاملتر (valueOf و toString) و دلیل صدا شدن این متد رو بهتر درک میکنیم!
Telegram
ProGraphs
تبدیل نوع دادهها (coercion) در جاوااسکریپت (قسمت اول):
چطور نوع دادههای مختلف در جاوااسکریپت به string تبدیل میشوند؟
❗️1-تقریبا همهی مقادیر primitive بدون تغییر خاصی به string تبدیل میشوند و حالت stringای آنها از پیش تعیین شده است:
true -> "true"
12…
چطور نوع دادههای مختلف در جاوااسکریپت به string تبدیل میشوند؟
❗️1-تقریبا همهی مقادیر primitive بدون تغییر خاصی به string تبدیل میشوند و حالت stringای آنها از پیش تعیین شده است:
true -> "true"
12…
ProGraphs
با اجرای این کد چه مقداری در کنسول چاپ میشود؟ #interviewquestion #js @ProGraphs
جواب: true
در چند مطلب اخیر، قسمتی از مفاهیم coercion در جاوااسکریپت را بررسی کردیم. حالا نتیجهی این کد را با استفاده از این مفاهیم بررسی میکنیم:
* در خط 9 یک آبجکت را با یک عدد مقایسه میکنیم. اگر از عملگر === استفاده شده بود، قطعا نتیجهی شرط false بود!
اما چون از عملگر == استفاده شده، آبجکت proGraphs به عدد تبدیل میشود تا مقایسه انجام شود.
**حالا باید آبجکت را به عدد تبدیل کنیم. اما قبل از تبدیل آبجکت به عدد، باید آبجکت به primitive تبدیل شود!
برای تبدیل آبجکت به primitive، متد valueOf داخل آبجکت صدا میشود. خروجی این متد عدد 20 است پس در نهایت آبجکت proGraphs به عدد 20 تبدیل شد و نتیجهی شرط true است!
در چند مطلب اخیر، قسمتی از مفاهیم coercion در جاوااسکریپت را بررسی کردیم. حالا نتیجهی این کد را با استفاده از این مفاهیم بررسی میکنیم:
* در خط 9 یک آبجکت را با یک عدد مقایسه میکنیم. اگر از عملگر === استفاده شده بود، قطعا نتیجهی شرط false بود!
اما چون از عملگر == استفاده شده، آبجکت proGraphs به عدد تبدیل میشود تا مقایسه انجام شود.
**حالا باید آبجکت را به عدد تبدیل کنیم. اما قبل از تبدیل آبجکت به عدد، باید آبجکت به primitive تبدیل شود!
برای تبدیل آبجکت به primitive، متد valueOf داخل آبجکت صدا میشود. خروجی این متد عدد 20 است پس در نهایت آبجکت proGraphs به عدد 20 تبدیل شد و نتیجهی شرط true است!
ProGraphs
جواب: true در چند مطلب اخیر، قسمتی از مفاهیم coercion در جاوااسکریپت را بررسی کردیم. حالا نتیجهی این کد را با استفاده از این مفاهیم بررسی میکنیم: * در خط 9 یک آبجکت را با یک عدد مقایسه میکنیم. اگر از عملگر === استفاده شده بود، قطعا نتیجهی شرط false بود!…
نتیجهی این کد رو در 2 مرحله بررسی کردیم. اگر این 2 مرحله رو متوجه نشدید اصلا نگران نباشید 😁
هردوی این مراحل رو در مطالب قبلی عمیقا بررسی کردیم:
* https://t.me/ProGraphs/432
** https://t.me/ProGraphs/446
هردوی این مراحل رو در مطالب قبلی عمیقا بررسی کردیم:
* https://t.me/ProGraphs/432
** https://t.me/ProGraphs/446
Telegram
ProGraphs
جواب:
احتمالا جواب اکثر دولوپرها به این سوال، این جمله است:
عملگر == فقط مقدار را چک میکند. ولی عملگر === علاوه بر مقدار، نوع داده را هم چک میکند.
اما این تعریف در جاوااسکریپت دقیق نیست!
❗️در واقع عملگر == هم نوعداده را چک میکند و اگر نوع دادهی دو…
احتمالا جواب اکثر دولوپرها به این سوال، این جمله است:
عملگر == فقط مقدار را چک میکند. ولی عملگر === علاوه بر مقدار، نوع داده را هم چک میکند.
اما این تعریف در جاوااسکریپت دقیق نیست!
❗️در واقع عملگر == هم نوعداده را چک میکند و اگر نوع دادهی دو…