رقصنده با کد – Telegram
رقصنده با کد
783 subscribers
1.69K photos
850 videos
207 files
665 links
Here are some interesting things I've come across during my learning process. That's it. Admin ID:
@alithecodeguy
Download Telegram
۱۰ سوال تستی برای آزمون A+ آزمون ۱۲۰۱

تقریبا میشه گفت ساده ترین سوالات ساده‌ترین آزمون جدی حوزه IT

آزمونی که واقعا مدرکش به درد میخوره (توی حوزه مرتبط) و میتونه خیلی تاثیر جدی توی کار پیدا کردنتون داشته باشه.
جاوااسکریپت (مشابه همه زبان‌هایی که دارن از استاندارد آی‌ای‌ای‌ای۷۵۴ استفاده می‌کنن) حاصل جمع 0.2 + 0.1 رو به شکل زیر نشون میده:
0.30000000000000004

حالا چرا همچین اتفاقی میفته؟ چون طبق معیارهای استاندارد بالا ، همه اعداد به مبنای باینری تبدیل می‌شن و کمی تقریب پیش میاد. توضیح کامل ترش رو می‌تونید توی استاندارد زیر مطالعه کنید.
https://lnkd.in/dzcdRqnj

دلیلش ممکنه برامون خیلی مهم نباشه ولی قطعا راه حلش مهمه.
حالا چطوری می‌تونیم موقع محاسبات از این خطا (اگر بشه بهش گفت خطا) جلوگیری کنیم؟

راه اول : استفاده از کتابخانه جانبی مثل دسیمال جی‌اس:
import Decimal from 'decimal.js';
console.log(new Decimal(0.1).plus(new Decimal(0.2)).toNumber());

راه دوم: استفاده از اینستنس متدهای نامبر:
console.log((0.1 + 0.2).toFixed(2));

راه سوم:استفاده از تقریب ثابت:
const precision = 1000
console.log((0.1 * precision + 0.2 * precision) / precision)

مطالب بیشتر در کانال رقصنده با کد :
@danceswithcode
جاوااسکریپت یک زبان dynamically typed (و همچنین weakly typed) هستش.

ویژگی dynamically typed یعنی یک متغیر می‌تونه هر نوع مقداری را نگه داره و در طول زمان نوعش تغییر کنه.

ویژگی weakly typed یعنی زبان در برخی عملیات‌ها به‌صورت ضمنی نوع داده را تبدیل می‌کنه، بدون اینکه خطای type بده.

این رفتار با زبان‌هایی مثل Java یا C# که نوع متغیر در آن‌ها ثابته، فرق داره.
رقصنده با کد
دوره جامع جاوااسکریپت (با تمرکز فقط روی جاوااسکریپت مدرن) پیش‌نیاز: ندارد مخاطب : همه نفرات علاقه مند ( با سابقه یا بدون سابقه ) کاربرد : فرانت ‌اند ، بک‌اند ، موبایل و ... تاریخ شروع : ۱۷ مرداد تعداد جلسات : ۱۶ جلسه ۲ ساعته ( هر جمعه ۲ جلسه ) ساعت برگزاری…
جلسه اول دوره جامع جاوااسکریپتمون که رایگان هم بود هفته گذشته با موفقیت برگزار شد. با تشکر از نفراتی که شرکت کردن.

فردا جلسه دوم و سوم دوره جامع جاوااسکریپت با حضور ۴ نفر از دوستان برگزار میشه ولی هنوز ۲ ظرفیت خالی دیگه وجود داره. چون جلسه اول بیشتر به تاریخچه و موارد غیر فنی پرداخته شد ، همچنان اگر علاقه داشته باشید می‌تونید شرکت کنید ولی از فردا دیگه دوره بسته میشه چون بعدش دیگه نمی‌تونید مباحث رو دنبال کنید اگر جلسه‌ای رو نبوده باشید.
تفاوت Expression و Statement

1️⃣ Expression

- Produces a value.
- Can be used wherever a value is expected (e.g., in a variable assignment, as a function argument).
- Can be as simple as a literal (42) or more complex (a + b * 2).


5 // literal → value is 5
x = 10 // assignment → value is 10
a + b // addition → value is sum
myFunction() // function call → value is return result
true ? 1 : 0 // ternary → value is 1 or 0


2️⃣ Statement

- Performs an action.
- Does not directly produce a value that can be used in another expression.
- Controls the flow or declares something.


if (x > 10) { ... } // if statement
for (let i = 0; i < 5; i++) { ... } // loop statement
function greet() { ... } // function declaration
return x; // return statement


3️⃣ Expression Statement

Some expressions can also be statements when used on their own, like:


x = 5; // assignment expression used as a statement
sayHello(); // call expression used as a statement


#js
به طور کلی توی جاوااسکریپت، از نظر سرعت ، معمولاً حلقه‌ی for ساده (با شمارنده‌ی ایندکس) سریع‌تر از for...of هست، و این دو هم ، معمولاً سریع‌تر از متدهایی مثل .forEach() یا .map() عمل می‌کنند.

چرا for معمولاً سریع‌تره؟
- هیچ تابع اضافه‌ای در هر تکرار ایجاد نمی‌کنه.
- از پروتکل iterator استفاده نمی‌کنه.
- مستقیماً با ایندکس و طول آرایه کار می‌کنه.

به صورت کلی:
- اگر سرعت حداکثری و کنترل کامل لازم داری : for ساده.
- اگر کد تمیز و خوانا می‌خوای و عملکرد خیلی بحرانی نیست : for...of.
- اگر سبک فانکشنال و کوتاه‌نویسی می‌خوای : .map() یا .forEach().
آقا حدسامون داره به واقعیت می‌پیونده.

دانشجوی دکترای علوم داده ، درس رو ول کرده رفته مدل اونلی‌فنز شده
در جاوااسکریپت Iterable و Enumerable دو مفهوم متفاوت هستن، هرچند که معناشون کمی شبیه همدیگست.

💡 کلمه Enumerable یعنی قابل شمارش بودن propertyها

- فقط مربوط به کلیدهای یک آبجکته.
- یعنی این‌که آیا وقتی داری کلیدهای آبجکت رو با روش‌هایی مثل for...in یا Object.keys() می‌گیری، اون ویژگی (property) دیده میشه یا نه.
- اصلاً کاری به مقدارش یا پیمایش المنت‌ها نداره، فقط دیده شدن property در شمارش‌هاست.
- کنترلش با denoscriptor انجام می‌شود


const obj = { a: 1, b: 2 };
Object.defineProperty(obj, 'c', { value: 3, enumerable: false });

console.log(Object.keys(obj)); // ['a', 'b']



💡 کلمه Iterable یعنی پیمایش بودن مقدار

- مربوط به اینه که آیا خود شیء می‌تونه با for...of یا ...spread پیمایش بشه یا نه.
- این یعنی آبجکت باید پروتکل iterator رو پیاده‌سازی کنه (Symbol.iterator).
- این مفهوم بیشتر برای ساختار داده‌های لیستی هست مثل Array, String, Map, Set.


const arr = [10, 20, 30];

for (const item of arr) {
console.log(item); // 10 20 30
}

console.log(...arr); // 10 20 30


مثال ترکیبی


const obj = {
a: 1,
b: 2,
[Symbol.iterator]: function* () {
yield this.a;
yield this.b;
}
};

console.log(Object.keys(obj));

for (const value of obj) {
console.log(value);
}


اینجا:
- ویژگی‌های a و b ، هر دو enumerable هستن پس Object.keys می‌بیندشون.
- خود obj رو با iterable کردیم پس for...of می‌تونه پیمایشش کنه.

---------------------

مطالب بیشتر در کانال رقصنده با کد
https://news.1rj.ru/str/danceswithcode

#js #deepjs
یه چیزی.

اگر گاهی نکته‌ی پیشرفته‌ای از جاوااسکریپت داخل کانال میذارم و بلد نیستید ، روی انگیزه‌ یا تلاشتون در یادگیری اثر منفی نذاره.
خیلی از نفرات این‌ها رو بلد نیستن و خیلی جاها هم آموزش نمیدن. چرا که خیلیاش واقعا توی استفاده روزمره نیستش.

من صرفا چون تلاش دارم جاوااسکریپت رو با تمام جزییاتش بلد بشم میرم سراغ این نکات و گرنه می‌تونید ۲۰ سال فرانت‌اند یا بک‌اند باشید و چیزی مثل weakRef یک بار هم نیازتون نشه.
a plus 220-1201 150 test.zip
8.3 MB
۱۵۰ تست A+

پیشنهاد میکنم نگاه کنید ببینید چه قدرش رو بلدید. حقیقتا خودم هر چی بیشتر میخونم بیشتر برگام میریزه که چه قدر بلد نیستم.
دو تا نقطه‌ای که گذاشته شده خطای تایپی نیست.

توی جاوااسکریپت وقتی میخواید از متدی روی یک عدد به صورت مستقیم استفاده کنید باید از ۲ نقطه استفاده کنید تا به انجین جاوااسکریپت بگید که نقطه اول یعنی اینکه عددمون قسمت اعشاری نداره و نقطه دوم برای کال کردن متد استفاده میشه. در غیر اینصورت خطا میده

از روش دوم هم میتونید استفاده کنید.
دو تا نسخه از چت جی‌پی‌تی رو دارم. یکی پولی و یکی رایگان.

نسخه رایگان به مراتب قوی‌تر از پولیه عمل میکنه. احتمالا به خاطر اینکه داره از ورژ‌ن‌های قبل ۵ استفاده می‌کنه.