[{"data":1,"prerenderedAt":1244},["ShallowReactive",2],{"post-\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir":3},{"page":4,"translation":1081,"nav":1098,"related":1228,"random":1235},{"id":5,"title":6,"body":7,"categories":1079,"category":1081,"date":1082,"description":1083,"draft":1084,"extension":1085,"image":1086,"kind":1081,"lang":1087,"meta":1088,"navigation":291,"path":1089,"readingTime":164,"seo":1090,"slug":1091,"stem":1092,"tags":1093,"translationKey":1081,"type":1080,"updated":1096,"__hash__":1097},"postsTr\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir.md","ES11 Nedir? ECMAScript 2020 Nedir?",{"type":8,"value":9,"toc":1057},"minimark",[10,19,72,75,80,83,85,93,100,103,179,186,212,214,220,256,267,335,345,391,393,397,408,425,499,501,505,514,663,665,669,686,691,740,742,746,749,834,836,840,846,943,945,952,955,982,984,988,997,1006,1010,1021,1028,1038,1040,1045,1053],[11,12,13,18],"p",{},[14,15,17],"a",{"href":16},"\u002Ftr\u002Fecmascript-nedir-ecmascript-ne-degildir-bilinmesi-gerekenler","ECMAScript"," (kısaca ES), Ecma International tarafından ECMA-262 dokümanında yayınlanan ve her yıl güncellenen JavaScript standartıdır. Temel amacı, tüm tarayıcılarda ve çalışma ortamlarında (Node.js, Deno vb.) uyumlu, standartlaşmış bir JavaScript mimarisi sağlamaktır.",[20,21,22,29],"blockquote",{},[11,23,24,25],{},"💡 ",[26,27,28],"strong",{},"Özet (TL;DR):",[30,31,32,39,62],"ul",{},[33,34,35,38],"li",{},[26,36,37],{},"ES11 Nedir?:"," Haziran 2020'de resmi olarak onaylanan 11. ECMAScript sürümüdür.",[33,40,41,44,45,49,50,53,54,57,58,61],{},[26,42,43],{},"Kilit Yenilikler:"," Optional Chaining (",[46,47,48],"code",{},"?.","), Nullish Coalescing (",[46,51,52],{},"??","), BigInt, ",[46,55,56],{},"Promise.allSettled",", ",[46,59,60],{},"globalThis"," ve Dynamic Imports.",[33,63,64,67,68],{},[26,65,66],{},"Motto:"," ",[69,70,71],"em",{},"Daha güvenli nesne erişimi, daha temiz varsayılan değer atamaları ve gelişmiş asenkron kontrol.",[73,74],"hr",{},[76,77,79],"h2",{"id":78},"es11-i̇le-gelen-yenilikler","ES11 İle Gelen Yenilikler",[11,81,82],{},"ES11 sürümü, kod yazımını daha yalın ve güvenli hale getiren birçok operatör ve yerleşik (built-in) nesne desteği getirmiştir.",[73,84],{},[86,87,89,90,92],"h3",{"id":88},"_1-optional-chaining-seçimli-zincirleme","1. Optional Chaining (Seçimli Zincirleme - ",[46,91,48],{},")",[11,94,95,96,99],{},"İç içe geçmiş nesne (object) yapılarında, ara özelliklerin var olup olmadığını kontrol etmeden derinlikteki bir değere ulaşmaya çalışmak Javascript'te sıkça ",[46,97,98],{},"TypeError: Cannot read property ... of undefined"," hatasına sebep oluyordu.",[11,101,102],{},"ES11 öncesinde bu hatayı engellemek için uzun mantıksal zincirler yazıyorduk:",[104,105,110],"pre",{"className":106,"code":107,"language":108,"meta":109,"style":109},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Eski Yöntem (Hantal ve Okunması Zor)\nlet color = \"\";\nif (building && building.room2 && building.room2.window1) {\n    color = building.room2.window1.color;\n}\n","javascript","",[46,111,112,121,142,162,173],{"__ignoreMap":109},[113,114,117],"span",{"class":115,"line":116},"line",1,[113,118,120],{"class":119},"sJ8bj","\u002F\u002F Eski Yöntem (Hantal ve Okunması Zor)\n",[113,122,124,128,132,135,139],{"class":115,"line":123},2,[113,125,127],{"class":126},"szBVR","let",[113,129,131],{"class":130},"sVt8B"," color ",[113,133,134],{"class":126},"=",[113,136,138],{"class":137},"sZZnC"," \"\"",[113,140,141],{"class":130},";\n",[113,143,145,148,151,154,157,159],{"class":115,"line":144},3,[113,146,147],{"class":126},"if",[113,149,150],{"class":130}," (building ",[113,152,153],{"class":126},"&&",[113,155,156],{"class":130}," building.room2 ",[113,158,153],{"class":126},[113,160,161],{"class":130}," building.room2.window1) {\n",[113,163,165,168,170],{"class":115,"line":164},4,[113,166,167],{"class":130},"    color ",[113,169,134],{"class":126},[113,171,172],{"class":130}," building.room2.window1.color;\n",[113,174,176],{"class":115,"line":175},5,[113,177,178],{"class":130},"}\n",[11,180,181,182,185],{},"ES11 ile gelen ",[26,183,184],{},"Optional Chaining"," sayesinde bu kontrolü tek satıra indirebiliriz:",[104,187,189],{"className":106,"code":188,"language":108,"meta":109,"style":109},"\u002F\u002F Yeni Yöntem (Temiz ve Güvenli)\nlet color = building?.room2?.window1?.color;\n\u002F\u002F Eğer building, room2 veya window1 tanımlı (null ya da undefined) değilse hata fırlatmaz, doğrudan undefined döner.\n",[46,190,191,196,207],{"__ignoreMap":109},[113,192,193],{"class":115,"line":116},[113,194,195],{"class":119},"\u002F\u002F Yeni Yöntem (Temiz ve Güvenli)\n",[113,197,198,200,202,204],{"class":115,"line":123},[113,199,127],{"class":126},[113,201,131],{"class":130},[113,203,134],{"class":126},[113,205,206],{"class":130}," building?.room2?.window1?.color;\n",[113,208,209],{"class":115,"line":144},[113,210,211],{"class":119},"\u002F\u002F Eğer building, room2 veya window1 tanımlı (null ya da undefined) değilse hata fırlatmaz, doğrudan undefined döner.\n",[73,213],{},[86,215,217,218,92],{"id":216},"_2-nullish-coalescing-operator-boşluk-birleştirme-operatörü","2. Nullish Coalescing Operator (Boşluk Birleştirme Operatörü - ",[46,219,52],{},[11,221,222,223,226,227,230,231,57,234,57,237,57,240,57,243,57,246,249,250,252,253,255],{},"JavaScript'te Mantıksal VEYA (",[46,224,225],{},"||",") operatörü, sol taraftaki değer ",[26,228,229],{},"falsy"," (",[46,232,233],{},"false",[46,235,236],{},"0",[46,238,239],{},"\"\"",[46,241,242],{},"null",[46,244,245],{},"undefined",[46,247,248],{},"NaN",") olduğunda sağdaki varsayılan değeri atar. Ancak bazen ",[46,251,236],{}," veya boş string (",[46,254,239],{},") geçerli bir değerdir ve bunların üzerine varsayılan değer yazılmasını istemeyiz.",[11,257,258,260,261,263,264,266],{},[46,259,52],{}," operatörü sadece değer ",[46,262,242],{}," veya ",[46,265,245],{}," olduğunda sağdaki fallback değeri atar:",[104,268,270],{"className":106,"code":269,"language":108,"meta":109,"style":109},"let userAge = 0;\n\nlet age1 = userAge || 18; \u002F\u002F age1 = 18 olur (Çünkü 0 falsy değerdir)\nlet age2 = userAge ?? 18; \u002F\u002F age2 = 0 olur (Çünkü 0 null ya da undefined değildir)\n",[46,271,272,287,293,315],{"__ignoreMap":109},[113,273,274,276,279,281,285],{"class":115,"line":116},[113,275,127],{"class":126},[113,277,278],{"class":130}," userAge ",[113,280,134],{"class":126},[113,282,284],{"class":283},"sj4cs"," 0",[113,286,141],{"class":130},[113,288,289],{"class":115,"line":123},[113,290,292],{"emptyLinePlaceholder":291},true,"\n",[113,294,295,297,300,302,304,306,309,312],{"class":115,"line":144},[113,296,127],{"class":126},[113,298,299],{"class":130}," age1 ",[113,301,134],{"class":126},[113,303,278],{"class":130},[113,305,225],{"class":126},[113,307,308],{"class":283}," 18",[113,310,311],{"class":130},"; ",[113,313,314],{"class":119},"\u002F\u002F age1 = 18 olur (Çünkü 0 falsy değerdir)\n",[113,316,317,319,322,324,326,328,330,332],{"class":115,"line":164},[113,318,127],{"class":126},[113,320,321],{"class":130}," age2 ",[113,323,134],{"class":126},[113,325,278],{"class":130},[113,327,52],{"class":126},[113,329,308],{"class":283},[113,331,311],{"class":130},[113,333,334],{"class":119},"\u002F\u002F age2 = 0 olur (Çünkü 0 null ya da undefined değildir)\n",[336,337,339,341,342,344],"h4",{"id":338},"ve-operatörlerinin-değer-değerlendirme-farkı",[46,340,225],{}," ve ",[46,343,52],{}," Operatörlerinin Değer Değerlendirme Farkı",[11,346,347,348,351,352,355,356,358,359,358,362,364,365,358,367,358,369,364,371,373,374,358,376,364,378,358,380,358,382,364,384,358,386,358,388,390],{},"| Sol Değer | Mantıksal VEYA (",[46,349,350],{},"sol || \"Varsayılan\"",") | Nullish Coalescing (",[46,353,354],{},"sol ?? \"Varsayılan\"",") |\n| :--- | :--- | :--- |\n| ",[46,357,242],{}," | ",[46,360,361],{},"\"Varsayılan\"",[46,363,361],{}," |\n| ",[46,366,245],{},[46,368,361],{},[46,370,361],{},[46,372,239],{}," (Boş String) | ",[46,375,361],{},[46,377,239],{},[46,379,236],{},[46,381,361],{},[46,383,236],{},[46,385,233],{},[46,387,361],{},[46,389,233],{}," |",[73,392],{},[86,394,396],{"id":395},"_3-bigint-çok-büyük-sayılar-i̇çin-tam-sayı-desteği","3. BigInt: Çok Büyük Sayılar İçin Tam Sayı Desteği",[11,398,399,400,403,404,407],{},"JavaScript'te ",[46,401,402],{},"Number"," tipi güvenli olarak en fazla $2^{53} - 1$ (",[46,405,406],{},"Number.MAX_SAFE_INTEGER",") değerini taşıyabilir. Bu sınırdan daha büyük tam sayılarla hassas matematik işlemleri yapmak imkansızdı.",[11,409,181,410,413,414,416,417,420,421,424],{},[46,411,412],{},"BigInt"," veri tipi, teorik olarak sınırsız büyüklükte tam sayıları yönetebilmenizi sağlar. Bir sayıyı ",[46,415,412],{}," yapmak için sonuna ",[46,418,419],{},"n"," eklemeniz veya ",[46,422,423],{},"BigInt()"," fonksiyonunu kullanmanız yeterlidir:",[104,426,428],{"className":106,"code":427,"language":108,"meta":109,"style":109},"const maxSafe = 9007199254740991n;\nconst hugeNumber = BigInt(\"900719925474099123456789\");\n\nconsole.log(maxSafe + 1n); \u002F\u002F 9007199254740992n (Hassas olarak hesaplanır)\n",[46,429,430,448,470,474],{"__ignoreMap":109},[113,431,432,435,438,441,444,446],{"class":115,"line":116},[113,433,434],{"class":126},"const",[113,436,437],{"class":283}," maxSafe",[113,439,440],{"class":126}," =",[113,442,443],{"class":283}," 9007199254740991",[113,445,419],{"class":126},[113,447,141],{"class":130},[113,449,450,452,455,457,461,464,467],{"class":115,"line":123},[113,451,434],{"class":126},[113,453,454],{"class":283}," hugeNumber",[113,456,440],{"class":126},[113,458,460],{"class":459},"sScJk"," BigInt",[113,462,463],{"class":130},"(",[113,465,466],{"class":137},"\"900719925474099123456789\"",[113,468,469],{"class":130},");\n",[113,471,472],{"class":115,"line":144},[113,473,292],{"emptyLinePlaceholder":291},[113,475,476,479,482,485,488,491,493,496],{"class":115,"line":164},[113,477,478],{"class":130},"console.",[113,480,481],{"class":459},"log",[113,483,484],{"class":130},"(maxSafe ",[113,486,487],{"class":126},"+",[113,489,490],{"class":283}," 1",[113,492,419],{"class":126},[113,494,495],{"class":130},"); ",[113,497,498],{"class":119},"\u002F\u002F 9007199254740992n (Hassas olarak hesaplanır)\n",[73,500],{},[86,502,504],{"id":503},"_4-promiseallsettled","4. Promise.allSettled",[11,506,507,510,511,513],{},[46,508,509],{},"Promise.all()",", kendisine verilen promise listesindeki tek bir promise bile hata alsa (reject edilse) tüm işlemi yarıda kesip hataya düşer. ",[26,512,56],{}," ise hata durumlarından bağımsız olarak tüm promiselerin tamamlanmasını (fulfilled veya rejected) bekler ve hepsinin sonucunu bir dizi olarak raporlar:",[104,515,517],{"className":106,"code":516,"language":108,"meta":109,"style":109},"const promises = [\n    Promise.resolve(\"Başarılı\"),\n    Promise.reject(\"Hata Oluştu\"),\n    Promise.resolve(\"Başarılı 2\")\n];\n\nPromise.allSettled(promises).then((results) => {\n    results.forEach((result) => console.log(result.status));\n    \u002F\u002F Çıktı sırasıyla: \"fulfilled\", \"rejected\", \"fulfilled\"\n});\n",[46,518,519,531,550,566,582,587,592,625,651,657],{"__ignoreMap":109},[113,520,521,523,526,528],{"class":115,"line":116},[113,522,434],{"class":126},[113,524,525],{"class":283}," promises",[113,527,440],{"class":126},[113,529,530],{"class":130}," [\n",[113,532,533,536,539,542,544,547],{"class":115,"line":123},[113,534,535],{"class":283},"    Promise",[113,537,538],{"class":130},".",[113,540,541],{"class":459},"resolve",[113,543,463],{"class":130},[113,545,546],{"class":137},"\"Başarılı\"",[113,548,549],{"class":130},"),\n",[113,551,552,554,556,559,561,564],{"class":115,"line":144},[113,553,535],{"class":283},[113,555,538],{"class":130},[113,557,558],{"class":459},"reject",[113,560,463],{"class":130},[113,562,563],{"class":137},"\"Hata Oluştu\"",[113,565,549],{"class":130},[113,567,568,570,572,574,576,579],{"class":115,"line":164},[113,569,535],{"class":283},[113,571,538],{"class":130},[113,573,541],{"class":459},[113,575,463],{"class":130},[113,577,578],{"class":137},"\"Başarılı 2\"",[113,580,581],{"class":130},")\n",[113,583,584],{"class":115,"line":175},[113,585,586],{"class":130},"];\n",[113,588,590],{"class":115,"line":589},6,[113,591,292],{"emptyLinePlaceholder":291},[113,593,595,598,600,603,606,609,612,616,619,622],{"class":115,"line":594},7,[113,596,597],{"class":283},"Promise",[113,599,538],{"class":130},[113,601,602],{"class":459},"allSettled",[113,604,605],{"class":130},"(promises).",[113,607,608],{"class":459},"then",[113,610,611],{"class":130},"((",[113,613,615],{"class":614},"s4XuR","results",[113,617,618],{"class":130},") ",[113,620,621],{"class":126},"=>",[113,623,624],{"class":130}," {\n",[113,626,628,631,634,636,639,641,643,646,648],{"class":115,"line":627},8,[113,629,630],{"class":130},"    results.",[113,632,633],{"class":459},"forEach",[113,635,611],{"class":130},[113,637,638],{"class":614},"result",[113,640,618],{"class":130},[113,642,621],{"class":126},[113,644,645],{"class":130}," console.",[113,647,481],{"class":459},[113,649,650],{"class":130},"(result.status));\n",[113,652,654],{"class":115,"line":653},9,[113,655,656],{"class":119},"    \u002F\u002F Çıktı sırasıyla: \"fulfilled\", \"rejected\", \"fulfilled\"\n",[113,658,660],{"class":115,"line":659},10,[113,661,662],{"class":130},"});\n",[73,664],{},[86,666,668],{"id":667},"_5-globalthis-nesnesi","5. globalThis Nesnesi",[11,670,671,672,263,675,678,679,682,683,685],{},"Farklı JavaScript çalışma ortamlarında küresel nesneye erişim yöntemleri farklılık gösteriyordu. Tarayıcıda ",[46,673,674],{},"window",[46,676,677],{},"self",", Node.js'te ",[46,680,681],{},"global",", Web Worker'larda ise ",[46,684,677],{}," kullanmak zorundaydık.",[11,687,688,690],{},[46,689,60],{},", kodun çalıştığı ortamdan bağımsız olarak küresel nesneye erişmek için standartlaştırılmış tek bir global pointer sunar:",[104,692,694],{"className":106,"code":693,"language":108,"meta":109,"style":109},"\u002F\u002F Hem tarayıcıda hem Node.js ortamında çalışır:\nglobalThis.setTimeout(() => {\n    console.log(\"Çalıştı\");\n}, 1000);\n",[46,695,696,701,716,730],{"__ignoreMap":109},[113,697,698],{"class":115,"line":116},[113,699,700],{"class":119},"\u002F\u002F Hem tarayıcıda hem Node.js ortamında çalışır:\n",[113,702,703,706,709,712,714],{"class":115,"line":123},[113,704,705],{"class":130},"globalThis.",[113,707,708],{"class":459},"setTimeout",[113,710,711],{"class":130},"(() ",[113,713,621],{"class":126},[113,715,624],{"class":130},[113,717,718,721,723,725,728],{"class":115,"line":144},[113,719,720],{"class":130},"    console.",[113,722,481],{"class":459},[113,724,463],{"class":130},[113,726,727],{"class":137},"\"Çalıştı\"",[113,729,469],{"class":130},[113,731,732,735,738],{"class":115,"line":164},[113,733,734],{"class":130},"}, ",[113,736,737],{"class":283},"1000",[113,739,469],{"class":130},[73,741],{},[86,743,745],{"id":744},"_6-dynamic-import-dinamik-modül-yükleme","6. Dynamic Import (Dinamik Modül Yükleme)",[11,747,748],{},"Modülleri dosyanın en üstünde statik olarak import etmek yerine, sadece bir olay (örn: butona tıklama) gerçekleştiğinde asenkron olarak yükleyebilmemizi sağlar. Bu sayede başlangıç dosya boyutu (bundle size) ciddi oranda azaltılır:",[104,750,752],{"className":106,"code":751,"language":108,"meta":109,"style":109},"\u002F\u002F İhtiyaç anında yükleme (Dynamic Import)\nbutton.addEventListener('click', async () => {\n    const { default: myModule } = await import('.\u002FmyModule.js');\n    myModule.doSomething();\n});\n",[46,753,754,759,784,819,830],{"__ignoreMap":109},[113,755,756],{"class":115,"line":116},[113,757,758],{"class":119},"\u002F\u002F İhtiyaç anında yükleme (Dynamic Import)\n",[113,760,761,764,767,769,772,774,777,780,782],{"class":115,"line":123},[113,762,763],{"class":130},"button.",[113,765,766],{"class":459},"addEventListener",[113,768,463],{"class":130},[113,770,771],{"class":137},"'click'",[113,773,57],{"class":130},[113,775,776],{"class":126},"async",[113,778,779],{"class":130}," () ",[113,781,621],{"class":126},[113,783,624],{"class":130},[113,785,786,789,792,795,798,801,804,806,809,812,814,817],{"class":115,"line":144},[113,787,788],{"class":126},"    const",[113,790,791],{"class":130}," { ",[113,793,794],{"class":614},"default",[113,796,797],{"class":130},": ",[113,799,800],{"class":283},"myModule",[113,802,803],{"class":130}," } ",[113,805,134],{"class":126},[113,807,808],{"class":126}," await",[113,810,811],{"class":126}," import",[113,813,463],{"class":130},[113,815,816],{"class":137},"'.\u002FmyModule.js'",[113,818,469],{"class":130},[113,820,821,824,827],{"class":115,"line":164},[113,822,823],{"class":130},"    myModule.",[113,825,826],{"class":459},"doSomething",[113,828,829],{"class":130},"();\n",[113,831,832],{"class":115,"line":175},[113,833,662],{"class":130},[73,835],{},[86,837,839],{"id":838},"_7-stringprototypematchall","7. String.prototype.matchAll",[11,841,842,845],{},[46,843,844],{},"matchAll"," metodu, bir Regex ifadesi ile eşleşen tüm sonuçları (yakalama grupları - capture groups dahil) detaylı bir iterator olarak döndürür:",[104,847,849],{"className":106,"code":848,"language":108,"meta":109,"style":109},"const regex = \u002F[1-3]\u002Fg;\nconst year = '1983';\n\nfor (const match of year.matchAll(regex)) {\n    console.log(match);\n}\n\u002F\u002F Çıktı:\n\u002F\u002F ['1', index: 0, input: '1983', groups: undefined]\n\u002F\u002F ['3', index: 3, input: '1983', groups: undefined]\n",[46,850,851,874,888,892,915,924,928,933,938],{"__ignoreMap":109},[113,852,853,855,858,860,863,866,869,872],{"class":115,"line":116},[113,854,434],{"class":126},[113,856,857],{"class":283}," regex",[113,859,440],{"class":126},[113,861,862],{"class":137}," \u002F",[113,864,865],{"class":283},"[1-3]",[113,867,868],{"class":137},"\u002F",[113,870,871],{"class":126},"g",[113,873,141],{"class":130},[113,875,876,878,881,883,886],{"class":115,"line":123},[113,877,434],{"class":126},[113,879,880],{"class":283}," year",[113,882,440],{"class":126},[113,884,885],{"class":137}," '1983'",[113,887,141],{"class":130},[113,889,890],{"class":115,"line":144},[113,891,292],{"emptyLinePlaceholder":291},[113,893,894,897,899,901,904,907,910,912],{"class":115,"line":164},[113,895,896],{"class":126},"for",[113,898,230],{"class":130},[113,900,434],{"class":126},[113,902,903],{"class":283}," match",[113,905,906],{"class":126}," of",[113,908,909],{"class":130}," year.",[113,911,844],{"class":459},[113,913,914],{"class":130},"(regex)) {\n",[113,916,917,919,921],{"class":115,"line":175},[113,918,720],{"class":130},[113,920,481],{"class":459},[113,922,923],{"class":130},"(match);\n",[113,925,926],{"class":115,"line":589},[113,927,178],{"class":130},[113,929,930],{"class":115,"line":594},[113,931,932],{"class":119},"\u002F\u002F Çıktı:\n",[113,934,935],{"class":115,"line":627},[113,936,937],{"class":119},"\u002F\u002F ['1', index: 0, input: '1983', groups: undefined]\n",[113,939,940],{"class":115,"line":653},[113,941,942],{"class":119},"\u002F\u002F ['3', index: 3, input: '1983', groups: undefined]\n",[73,944],{},[86,946,948,949,92],{"id":947},"_8-namespace-export-export-as","8. Namespace Export (",[46,950,951],{},"export * as",[11,953,954],{},"ES11 öncesinde başka bir dosyadan gelen modüllerin tamamını bir ad alanı (namespace) altında import edip hemen export etmek iki ayrı adım gerektiriyordu. Artık bu işlem tek satırda yapılabilir:",[104,956,958],{"className":106,"code":957,"language":108,"meta":109,"style":109},"export * as MyComponent from '.\u002FComponent.js';\n",[46,959,960],{"__ignoreMap":109},[113,961,962,965,968,971,974,977,980],{"class":115,"line":116},[113,963,964],{"class":126},"export",[113,966,967],{"class":283}," *",[113,969,970],{"class":126}," as",[113,972,973],{"class":130}," MyComponent ",[113,975,976],{"class":126},"from",[113,978,979],{"class":137}," '.\u002FComponent.js'",[113,981,141],{"class":130},[73,983],{},[76,985,987],{"id":986},"sıkça-sorulan-sorular-faq","Sıkça Sorulan Sorular (FAQ)",[86,989,991,341,993,996],{"id":990},"promiseall-ve-promiseallsettled-neye-göre-seçilmelidir",[46,992,509],{},[46,994,995],{},"Promise.allSettled()"," neye göre seçilmelidir?",[11,998,999,1000,1002,1003,1005],{},"Eğer işlemler birbirine bağımlıysa (biri başarısız olduğunda diğerlerinin çalışmasının anlamı yoksa) ",[46,1001,509],{}," kullanılmalıdır. Ancak birbirinden bağımsız API istekleri atılıyorsa ve hata alan isteklerin başarılı olanları engellemesi istenmiyorsa ",[46,1004,995],{}," tercih edilmelidir.",[86,1007,1009],{"id":1008},"bigint-ve-number-aritmetik-işleme-girebilir-mi","BigInt ve Number aritmetik işleme girebilir mi?",[11,1011,1012,1013,1016,1017,1020],{},"Hayır, güvenli sayı sınırları korunması amacıyla ",[46,1014,1015],{},"TypeError"," fırlatılır. İşlem yapmak için tipler açıkça (explicitly) birbirine dönüştürülmelidir. (örn: ",[46,1018,1019],{},"BigInt(5) + 10n",").",[86,1022,1024,1025,1027],{"id":1023},"optional-chaining-kullanımı-performans-kaybı-yaşatır-mı","Optional Chaining (",[46,1026,48],{},") kullanımı performans kaybı yaşatır mı?",[11,1029,1030,1031,1034,1035,1037],{},"Hayır. Kodunuz derlendiğinde (transpilation - örn. Babel ile) optional chaining ifadeleri basit ",[46,1032,1033],{},"if-else"," veya üçlü (ternary) ",[46,1036,242],{}," kontrollerine dönüştürülür. Çalışma zamanında (runtime) herhangi bir ek yük getirmez, kodun güvenliğini artırır.",[73,1039],{},[1041,1042,1044],"h5",{"id":1043},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[30,1046,1047,1050],{},[33,1048,1049],{},"20.06.2026: Yazı modernize edildi. BigInt, globalThis, Dynamic Import konuları, detaylı karşılaştırma tablosu ve FAQ bölümü eklendi.",[33,1051,1052],{},"11.05.2022: Yazı özeti düzenlendi.",[1054,1055,1056],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":109,"searchDepth":123,"depth":123,"links":1058},[1059,1072],{"id":78,"depth":123,"text":79,"children":1060},[1061,1063,1065,1066,1067,1068,1069,1070],{"id":88,"depth":144,"text":1062},"1. Optional Chaining (Seçimli Zincirleme - ?.)",{"id":216,"depth":144,"text":1064},"2. Nullish Coalescing Operator (Boşluk Birleştirme Operatörü - ??)",{"id":395,"depth":144,"text":396},{"id":503,"depth":144,"text":504},{"id":667,"depth":144,"text":668},{"id":744,"depth":144,"text":745},{"id":838,"depth":144,"text":839},{"id":947,"depth":144,"text":1071},"8. Namespace Export (export * as)",{"id":986,"depth":123,"text":987,"children":1073},[1074,1076,1077],{"id":990,"depth":144,"text":1075},"Promise.all() ve Promise.allSettled() neye göre seçilmelidir?",{"id":1008,"depth":144,"text":1009},{"id":1023,"depth":144,"text":1078},"Optional Chaining (?.) kullanımı performans kaybı yaşatır mı?",[1080],"technical",null,"2021-10-19","ECMAScript 2020 (ES11) sürümüyle gelen Optional Chaining, Nullish Coalescing, BigInt, globalThis ve Promise.allSettled özelliklerini öğrenin.",false,"md","\u002Fimages\u002Fhero\u002Fes11.avif","tr",{},"\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir",{"title":6,"description":1083},"es11-nedir-ecmascript-2020-nedir","tr\u002Fes11-nedir-ecmascript-2020-nedir",[108,1094,1095],"es11","ecmascript","2026-06-20","lq18VnuM_7kelZhBuQemFDX_fIbgZmTT_xJCWrxZspw",{"prev":1099,"next":1102,"others":1105,"lucky":1225,"readingTime":164},{"path":1100,"title":1101},"\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir","ES10 Nedir? ECMAScript 2019 Nedir?",{"path":1103,"title":1104},"\u002Ftr\u002Fes7-nedir-ecmascript-2016-nedir","ES7 Nedir? ECMAScript 2016 Nedir?",[1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1219,1222],{"path":1107,"title":1108},"\u002Ftr\u002Fiterator-tasarim-deseni-nedir","Iterator Tasarım Deseni Nedir?",{"path":1110,"title":1111},"\u002Ftr\u002Ffull-stack-proje-agaci","Full-Stack Proje Yol Haritası ve İçindekiler",{"path":1113,"title":1114},"\u002Ftr\u002Fjwt-guvenli-mi-guvenlik-acigi-olusturmayin","JWT Güvenli Derken Güvenlik Açığı Oluşturmayın",{"path":1116,"title":1117},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-factory-method-nedir","Factory Method Tasarım Deseni Nedir?",{"path":1119,"title":1120},"\u002Ftr\u002Froot-yetkisi-olmayan-kullanici-ssh-baglantisini-ssh-baglantisini-ssh-anahtari-ile-nasil-kurabilir","Root yetkisi olmayan kullanıcı, SSH bağlantısını, SSH anahtarı ile nasıl kurabilir?",{"path":1122,"title":1123},"\u002Ftr\u002Frest-api-hata-yonetimi","REST Api Hata Yönetimi",{"path":1125,"title":1126},"\u002Ftr\u002Fekran-filtresi-mavi-isik-filtresi-flux","Gözlere dost, mavi ışığa düşman ekran filtresi f.lux",{"path":1128,"title":1129},"\u002Ftr\u002Fdocker-ile-mongodb-kurulumu","Docker ile MongoDB Kurulumu",{"path":1131,"title":1132},"\u002Ftr\u002Fadapter-tasarim-deseni-nedir","Adapter Tasarım Deseni Nedir?",{"path":1134,"title":1135},"\u002Ftr\u002Fmerhaba-gluster","Merhaba Gluster: Dağıtık Dosya Sistemi Nedir?",{"path":1137,"title":1138},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?",{"path":1140,"title":1141},"\u002Ftr\u002Fdesign-patterns-tasarim-desenleri-nedir","Design Patterns \u002F Tasarım Desenleri nedir?",{"path":1143,"title":1144},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":1146,"title":1147},"\u002Ftr\u002Frest-api-dokumantasyonu-nasil-yapilir","REST Api Dokümantasyonu Nasıl Oluşturulur?",{"path":1149,"title":1150},"\u002Ftr\u002Flitespeed-web-server-performans-artisi","Konfor Alanından Çıkıp, Konforlu Bir VPS'e Geçmek: LiteSpeed Web Server",{"path":1152,"title":1153},"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı",{"path":1155,"title":1156},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":1158,"title":1159},"\u002Ftr\u002Fdocker-swarm-nedir","Docker Swarm Nedir?",{"path":1161,"title":1162},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":1164,"title":1165},"\u002Ftr\u002Fmemento-tasarim-deseni-nedir","Memento Tasarım Deseni Nedir?",{"path":1167,"title":1168},"\u002Ftr\u002Fubuntu-guncellemesi-sonrasi-cyberpanele-ulasilamama-sorunlarini-giderme","Ubuntu Güncellemesi Sonrası CyberPanel'e Ulaşılamama Sorunlarını Giderme",{"path":1170,"title":1171},"\u002Ftr\u002Fwindows-10-golang-kurulumu","Windows 10 ve 11'de Golang Kurulumu ve GOPATH Yapılandırması",{"path":1173,"title":1174},"\u002Ftr\u002Flinuxda-golang-kurulumu","Linux'ta Golang Kurulumu",{"path":1176,"title":1177},"\u002Ftr\u002Fmutable-ve-immutable-kavrami","Mutable ve Immutable Kavramları Nedir?",{"path":1179,"title":1180},"\u002Ftr\u002Fbridge-tasarim-deseni-nedir","Bridge Tasarım Deseni Nedir?",{"path":1182,"title":1183},"\u002Ftr\u002Fdocker-ile-redis-kurulumu","Docker ile Redis Kurulumu",{"path":1185,"title":1186},"\u002Ftr\u002Fdecorator-tasarim-deseni-nedir","Decorator Tasarım Deseni Nedir?",{"path":1188,"title":1189},"\u002Ftr\u002Fes16-nedir-ecmascript-2025-nedir","ES16 nedir? ECMAScript 2025 nedir?",{"path":1191,"title":1192},"\u002Ftr\u002Fapi-gateway-nedir","API Gateway Nedir? Ne İşe Yarar?",{"path":1194,"title":1195},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":1197,"title":1198},"\u002Ftr\u002Fes5-nedir","ES5 Nedir? JavaScript Geliştiricileri İçin Kılavuz",{"path":1200,"title":1201},"\u002Ftr\u002Fes17-nedir-ecmascript-2026-nedir","ES17 nedir? ECMAScript 2026 nedir?",{"path":1203,"title":1204},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",{"path":1206,"title":1207},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-abstract-factory-nedir","Abstract Factory Tasarım Deseni Nedir?",{"path":1209,"title":1210},"\u002Ftr\u002Fvisitor-tasarim-deseni-nedir","Visitor Tasarım Deseni Nedir?",{"path":1212,"title":1213},"\u002Ftr\u002Ffacade-tasarim-deseni-nedir","Facade Tasarım Deseni Nedir?",{"path":1215,"title":1216},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":16,"title":1218},"ECMAScript Nedir? Bilinmesi Gerekenler...",{"path":1220,"title":1221},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",{"path":1223,"title":1224},"\u002Ftr\u002Fproxy-tasarim-deseni-nedir","Proxy Tasarım Deseni Nedir?",{"path":1226,"title":1227},"\u002Ftr\u002Frest-api-uri-yapisi-nasil-olmali","REST API URI Yapısı Nasıl Olmalı?",[1229,1230,1231,1234],{"path":1161,"title":1162,"date":1096},{"path":1155,"title":1156,"date":1096},{"path":1232,"title":1233,"date":1096},"\u002Ftr\u002Fes15-nedir-ecmascript-2024-nedir","ES15 nedir? ECMAScript 2024 nedir?",{"path":1188,"title":1189,"date":1096},[1236,1238,1242],{"path":1137,"title":1138,"date":1237},"2021-07-27",{"path":1239,"title":1240,"date":1241},"\u002Ftr\u002Ffull-stack-proje-gelistiriyoruz","Full Stack Proje Geliştiriyoruz","2021-02-16",{"path":1119,"title":1120,"date":1243},"2021-02-20",1782142001452]