2019 (2019)
در «جاوااسکریپت 2019» چند تغییر کاربردی آمد: تمیزکردن ابتدا/انتهای رشته، ساخت شیء از جفت ها، حذف پارامتر اضافی در catch، تخت کردن آرایه ها، مرتب سازی پایدار، و بهبود JSON.stringify(). همه را ساده و کوتاه می بینیم.
ویژگی های تازه جاوااسکریپت 2019
trimStart(); فاصله های اول رشته را حذف کن
«فاصله (Whitespace)» یعنی کاراکترهای خالی مثل فاصله و تب. این متد فاصله های اول رشته را می بُرد.
let text1 = " Hello World! ";
let text2 = text1.trimStart();
trimEnd(); فاصله های آخر رشته را حذف کن
این متد شبیه trim() است؛ اما فقط انتهای رشته را تمیز می کند.
let raw = " Hello World! ";
let cleaned = raw.trimEnd();
Object.fromEntries(); از جفت ها شیء بساز
«جفت کلید/مقدار (Key/Value Pair)» یعنی آرایه دو عضوی مانند ["name", 12].
const pairs = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const obj = Object.fromEntries(pairs);
Optional catch binding؛ وقتی ارور لازم نیست
اگر متغیر خطا را استفاده نمی کنی، می توانی پارامتر catch را حذف کنی.
try {
// code
} catch {
// handle without error variable
}
Array.flat(); آرایه تو در تو را تخت کن
«تخت کردن (Flatten)» یعنی حذف لایه های اضافی آرایه تو در تو.
const nested = [[1, 2], [3, 4], [5, 6]];
const flat = nested.flat();
Array.flatMap(); نگاشت و تخت کردن باهم
«نگاشت (Map)» یعنی تبدیل تک تک اعضا. این متد سپس خروجی را تخت می کند.
const nums = [1, 2, 3, 4];
const mapped = nums.flatMap((x) => {
return [x, x * 10];
});
مرتب سازی پایدار؛ ترتیب برابرها حفظ می شود
«پایدار (Stable)» یعنی اگر دو آیتم برابر باشند، ترتیب قبلی شان حفظ شود.
const items = [
{ name: "X00", price: 100 },
{ name: "X01", price: 100 },
{ name: "X02", price: 100 },
{ name: "X03", price: 100 },
{ name: "X04", price: 110 },
{ name: "X05", price: 110 },
{ name: "X06", price: 110 },
{ name: "X07", price: 110 }
];
items.sort((a, b) => {
return a.price - b.price;
});
JSON.stringify؛ یونیکدهای خاص درست تبدیل می شوند
اکنون کاراکترهای خاص یونیکد، امن و درست رشته سازی می شوند.
let text = JSON.stringify("\u26D4");
\u2028 و \u2029 در رشته ها مجازند
این جداکننده ها قبلاً خطا بودند. حالا در «رشته (String)» مجازند.
let s = "\u2028";
Function.toString(); متن تابع دقیق برمی گردد
الان خروجی شامل فاصله ها و کامنت ها هم هست؛ دقیق مثل کد.
function multiply(p1, p2) {
// comment kept in toString
return p1 * p2;
}
let src = multiply.toString();
گام های تمرین سریع
- روی یک رشته ورودی،
trimStart()وtrimEnd()را تست کن. - با
fromEntries()از جفت ها، شیء فروشگاه بساز. - یک آرایه تو در تو را با
flat()تخت کن.
جمع بندی سریع
- تمیزکاری رشته ها دقیق تر شد.
- از جفت ها راحت شیء می سازیم.
- آرایه ها تخت و مرتب سازی پایدارند.
- رشته سازی JSON امن تر شد.
برای ادامه مسیر، «جاوااسکریپت 2020» را ببین؛ یا به نسخه قبلی «جاوااسکریپت 2018» برگرد.