چگونه به پولدارترین فرد کره زمین تبدیل شویم (و یادگیری کمی گولنگ در مسیر)
پیاده سازی یک نمونه شبیه سازی شده از روند توزیع ثروت میان فقیر و غنی در جامعه
بیشتر بخوانیدبا سلام
در نظر سنجی ای که در سال 2017 توسط StackOverflow انجام شد.مشخض شد که js یکی از رایج ترین و جذاب ترین زبان ها برای تولید صفحات وب تعاملی می تونه باشه.
این زبان توسط تعداد زیادی از مرورگر ها پشتیبانی میشه همچنین استفاده از جاوا اسکریپت در محصولات معرفی شده توسط شرکت توسعه Magento طراحی وب سایت های تجارت الکترونیک رو افزایش داده است.
یادگیری js برای توسعه صفحات پویای وب خیلی آسونه اما استفاده از تکنیک ها و ترفندها ی js کارشما رو راحت تر میکنه و از طرفی توی زمان هم صرفه جویی میکنید.
این هک های ساده، کدهای بهینه شده ای هستند که با استفاده از منطق برنامه نویسی هوشمندانه ساخته شده اند.
از استفاده شون لذت ببرید.
این روش شگفت انگیز به شما نشون میده که چطور میشه از Array Destructing برای اجرای توابع زیاد غیر همزمان (Async) و به صورت پشت سر هم استفاده کنید.به مثال زیر دقت کنید:
const [user, account] = await Promise.all([
fetch('/user'),
fetch('/account')
])
این علامت ‘!!’ در js تحت عنوان نفی دوگانه ( ** double negation ** ) شناخته میشه.برناlه نویس ها از اون استفاده میکنند برای اینکه مشخص بشه آیا متغیر مورد نظر وجود داره و مقدار معتبری هم داره یا نه.
**اگر برای یک متغیر از این علامت استفاده کنیم.مثلا ** variable!! ** این متغیر در صورتی false برمیگردونه که مقدار متغیر یکی از ** 0 , “” , null , NAN ویا undefined باشه .در غیر این صورت true برمیگردونه.
به مثال زیر دقت کنید:
function Account(cash) {
this.cash =cash
this.hasMoney = !!cash;
}
var account = new Account(100.50);
console.log(account.cash); // 100.50
console.log(account.hasMoney); // true
var emptyAccount = new Account(0);
console.log(emptyAccount.cash); // 0
console.log(emptyaccount.hasMoney); // fasle
با استفاده از همین ** array destruction ** میشه عمل جابجایی مقدار بین دومتغیر رو به سادگی انجام داد:
let a = 'world', b = 'hello'
[a, b] = [b, a]
console.log(a) // -> hello
console.log(b) // -> world
این روش زمانی استفاده میشه که عدد مورد نظر ما داخل یک رشته باشه.مثلا “5” .اگه داخل رشته مورد نظر ما چیزی غیر از اعداد باشه NaN برمیگردونه که یعنی ( ** not a number ** )
function toNumber( strNumber) {
return +strNumber;
}
console.log(toNumber( “1234”)); // 1234
console.log(toNumber(“ABC”)); // NaN
همینطور میشه از این روش برای ‘تاریخ’ در js هم استفاده کرد:
console.log(+new Date( )) // 1461288164385
استفاده از کوتاه نویسی میتونه سرعت برنامه نویسی رو زیاد کنه و توی زمان هم صرفه جویی کنید.
مثلا هرجا کد زیر رو دید:
If(connected){
Login()
}
میتونید متغیر و تابع رو در یک خط کوتاه کنید و بنویسید :
connected && login();
یا یک مثال دیگه ازش:
user && user.login();
اگه از ()console.log برای خطا یابی استفاده میکنید ، داریم :
console.log({ a, b, c })
// outputs this nice object:
// {
// a: 5,
// b: 6,
// c: 7
// }
مثال زیر میتونه جواب خیلی از سوال هایی از این دست باشه.
فرض کنید ما میخواهیم از تابعی استفاده کنیم که در مرورگر های IE 6 به پایین وجود نداره و همینطور انتظار داریم که کدمون توی این دست از مرورگر ها به مشکل نخوره به مثال زیر دقت کنید :
if (‘querySelector’ in document) {
document.querySelector(“\#id”);
} else {
Document.getElementById(“id”);
}
در مثال بالا تابع ‘querySelector’ در IE 6 به قبل وجود نداره.
این روش برای فشرده سازی عملیات آرایه ای در یک خط استفاده میشه.
// Find max value
const max = (arr) => Math.max(...arr);
max([123, 321, 32]) // outputs: 321
// Sum array
const sum = (arr) => arr.reduce((a, b) => (a + b), 0)
sum([1, 2, 3, 4]) // output: 10
توی این روش به ‘…’ که توی کد استفاده شده میگویند “عملگر گسترش” یا ( spread operator )
one = ['a', 'b', 'c']
const two = ['d', 'e', 'f']
const three = ['g', 'h', 'i']
// Old way #1
const result = one.concat(two, three)
// Old way #2
const result = [].concat(one, two, three)
// New
const result = [...one, ...two, ...three]
بجای استفاده ار math.floor میتوان از ‘~~’ استفاده نمود :
~~3.9 === Math.floor(3); //true, 3
var array= [1, 2, 3, 4, 5, 6];
console.log(array. Slice(-1)); // [6]
console.log(array. Slice(-2)); // [5, 6]
console.log(array. Slice(-3)); // [4, 5, 6]
12- استفاده از کلون کردن (cloning) :
ساده ترین روش برای کلون (کپی) کردن یک آرایه و ابجکت ، استفاده ‘…’ یه همان عملگر گسترش است.
const obj = { ...oldObj }
const arr = [ ...oldArr ]
علتش اینه که فقط یک بار عمل ارزش یابی یا ** ( evaluate ) ** انجام میشه.مگر اینکه در if/else دقت لازم رو انجام داده و از return هم استفاده کنید.
var string = “john john”;
console.log(string.replace(/hn/, “ana”)); // “joana john”
console.log(string.replace(/hn/g, “ana”)); // “joana joana”
خبر خوب اینه که میشه بدون استفاده از کتابخانه های خارجی عناصر یک آریه رو مخلوط کرد یا اصطلاحا بهم زد.
var list = [1, 2, 3];
console.log(list.sort(function() {
return Math.randome () – 0.5
})); // [2, 1, 3]
var array = [1, 2, 3, 4, 5, 6];
console.log(array.length); // 6
array.length = 3;
console.log(array.length); // 3
console.log(array); // [1,2,3]
اگه از ()array.concat استفاده کنید میشه دوتا آرایه رو merge کرد اما این روش هزینه مصرفی حافظه اش بالاست و وقتی خودشو نشون میده که با داده های زیادی سروکار داریم.مثلا :
var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
console.log(array1.concat(array2)); // [1,2,3,4,5,6];
اما روش بهینه تر، کد زیر میتونه باشه:
var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
console.log( array1.push.apply(array1, array2) ); // [1,2,3,4,5,6];
لینک مقاله اصلی.
موفق باشید.
پیاده سازی یک نمونه شبیه سازی شده از روند توزیع ثروت میان فقیر و غنی در جامعه
بیشتر بخوانیدمقدمه تا کنون، ما یک بلاکچین ساختهایم که همه ویژگیهای کلیدی را دارد آدرسهای ناشناس، امن و بهطور تصادفی تولید شده. ذخیره سازی داده های ب…
بیشتر بخوانید