[{"data":1,"prerenderedAt":1241},["ShallowReactive",2],{"post-\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir":3},{"page":4,"translation":1075,"nav":1091,"related":1222,"random":1230},{"id":5,"title":6,"body":7,"categories":1073,"category":1075,"date":1076,"description":1077,"draft":1078,"extension":1079,"image":1080,"kind":1075,"lang":105,"meta":1081,"navigation":504,"path":1082,"readingTime":364,"seo":1083,"slug":1084,"stem":1085,"tags":1086,"translationKey":1075,"type":1074,"updated":1089,"__hash__":1090},"postsTr\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir.md","ES12 Nedir? ECMAScript 2021 Nedir?",{"type":8,"value":9,"toc":1063},"minimark",[10,77,85,90,93,98,201,203,208,211,241,243,247,253,305,307,311,317,415,424,426,430,438,444,450,591,593,597,607,615,665,668,721,724,729,771,774,832,835,840,881,883,953,971,973,977,988,1038,1040,1045,1059],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,31,46],"ul",{},[25,26,27,30],"li",{},[18,28,29],{},"Nedir:"," Haziran 2021'de yayınlanan, JavaScript standartlarının (ECMAScript) 12. ana sürümüdür.",[25,32,33,36,37,41,42,45],{},[18,34,35],{},"Kritik Hata Düzeltmesi:"," Orijinal yazıdaki ",[38,39,40],"code",{},"Promise.any"," try-catch bloğundaki parantez kapatma hatası ve ",[38,43,44],{},"WeakRef","'in tanımsız dönme riski (dereference hatası) giderilmiştir.",[25,47,48,51,52,55,56,59,60,55,63,55,66,69,70,73,74,76],{},[18,49,50],{},"Temel Özellikler:"," ",[38,53,54],{},"Promise.any()",", ",[38,57,58],{},"String.prototype.replaceAll()",", mantıksal atama operatörleri (",[38,61,62],{},"&&=",[38,64,65],{},"||=",[38,67,68],{},"??=","), nümerik ayraçlar (",[38,71,72],{},"1_000_000",") ve zayıf referanslar (",[38,75,44],{},").",[14,78,79,84],{},[80,81,83],"a",{"href":82},"\u002Ftr\u002Fecmascript-nedir-ecmascript-ne-degildir-bilinmesi-gerekenler","ECMAScript",", kısa adıyla ES, Ecma International tarafından ECMA-262 dokümanında yayınlanan ve her yıl yenilenen JavaScript standardıdır. Asıl amacı JavaScript için bir standart geliştirerek tüm tarayıcılarda uyumlu çalışabilen kodlar yazılmasına olanak vermektir. Bununla birlikte Node.js gibi sunucu tabanlı motorlar da ECMAScript ile uyum göstermektedir.",[14,86,87],{},[18,88,89],{},"ES12 (ECMAScript 2021), Haziran 2021'de yayınlanan 12. ECMAScript sürümüdür.",[91,92],"hr",{},[94,95,97],"h3",{"id":96},"es12-mantıksal-atama-operatörleri-hızlı-referans-tablosu","ES12 Mantıksal Atama Operatörleri Hızlı Referans Tablosu",[99,100,101,121],"table",{},[102,103,104],"thead",{},[105,106,107,112,115,118],"tr",{},[108,109,111],"th",{"align":110},"left","Operatör",[108,113,114],{"align":110},"Kısa Yazım",[108,116,117],{"align":110},"Açık Yazım Karşılığı",[108,119,120],{"align":110},"Değer Atama Koşulu",[122,123,124,154,167],"tbody",{},[105,125,126,134,139,144],{},[127,128,129,133],"td",{"align":110},[18,130,131],{},[38,132,62],{}," (Logical AND)",[127,135,136],{"align":110},[38,137,138],{},"x &&= y",[127,140,141],{"align":110},[38,142,143],{},"if (x) { x = y; }",[127,145,146,149,150,153],{"align":110},[38,147,148],{},"x"," truthy (doğru) bir değer ise ",[38,151,152],{},"y","'yi atar.",[105,155,156,159,161,164],{},[127,157,158],{"align":110},"**`",[127,160],{"align":110},[127,162,163],{"align":110},"=`** (Logical OR)",[127,165,166],{"align":110},"`x",[105,168,169,176,181,186],{},[127,170,171,175],{"align":110},[18,172,173],{},[38,174,68],{}," (Nullish Coalescing)",[127,177,178],{"align":110},[38,179,180],{},"x ??= y",[127,182,183],{"align":110},[38,184,185],{},"if (x == null) { x = y; }",[127,187,188,190,191,194,195,198,199,153],{"align":110},[38,189,148],{}," sadece ",[38,192,193],{},"null"," veya ",[38,196,197],{},"undefined"," ise ",[38,200,152],{},[91,202],{},[204,205,207],"h2",{"id":206},"es12-ile-gelen-yenilikler","ES12 ile Gelen Yenilikler",[14,209,210],{},"ES12 ile birlikte tanımlanan yeni özellikler şunlardır:",[22,212,213,217,221,225,235],{},[25,214,215],{},[38,216,58],{},[25,218,219],{},[38,220,40],{},[25,222,223],{},[38,224,44],{},[25,226,227,55,229,231,232,234],{},[38,228,62],{},[38,230,65],{}," ve ",[38,233,68],{}," operatörleri",[25,236,237,240],{},[38,238,239],{},"Numeric separators"," (Nümerik Ayraçlar)",[91,242],{},[94,244,246],{"id":245},"_1-stringprototypereplaceall","1. String.prototype.replaceAll()",[14,248,249,252],{},[38,250,251],{},"replaceAll"," metodu, sizi karmaşık düzenli ifadeler (regular expressions) kullanmaktan kurtaracak basit bir eklemedir. İsminden de anlaşılabileceği gibi bu metot ile bir string içerisinde aradığınız bir alt stringi bulunduğu her konumda başka bir stringle değiştirebilirsiniz:",[254,255,260],"pre",{"className":256,"code":257,"language":258,"meta":259,"style":259},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Tüm x'leri e ile değiştirelim\n\u002F\u002F xvrxnbal evrenbal haline dönüşecektir.\n'xvrxnbal'.replaceAll('x', 'e');\n","javascript","",[38,261,262,271,277],{"__ignoreMap":259},[263,264,267],"span",{"class":265,"line":266},"line",1,[263,268,270],{"class":269},"sJ8bj","\u002F\u002F Tüm x'leri e ile değiştirelim\n",[263,272,274],{"class":265,"line":273},2,[263,275,276],{"class":269},"\u002F\u002F xvrxnbal evrenbal haline dönüşecektir.\n",[263,278,280,284,288,291,294,297,299,302],{"class":265,"line":279},3,[263,281,283],{"class":282},"sZZnC","'xvrxnbal'",[263,285,287],{"class":286},"sVt8B",".",[263,289,251],{"class":290},"sScJk",[263,292,293],{"class":286},"(",[263,295,296],{"class":282},"'x'",[263,298,55],{"class":286},[263,300,301],{"class":282},"'e'",[263,303,304],{"class":286},");\n",[91,306],{},[94,308,310],{"id":309},"_2-promiseany","2. Promise.any()",[14,312,313,314,316],{},"ES12 ile birlikte yeni bir Promise metodu olan ",[38,315,40],{}," geldi. Bu metot birden fazla Promise nesnesini kabul eder ve bunlardan herhangi biri başarıyla çözümlendiğinde çözümlenmiş (resolved) kabul edilir:",[254,318,320],{"className":256,"code":319,"language":258,"meta":259,"style":259},"try {\n    \u002F\u002F Promise.any metoduna dizi içerisinde birden fazla promise gönderiyoruz.\n    const firstPromiseResolved = await Promise.any(promisesArray);\n    \u002F\u002F Promiselerden herhangi biri çözüldüğünde kodun bu bölümü çalışır\n    console.log(firstPromiseResolved);\n} catch (e) {\n    \u002F\u002F Hata oluşursa (tüm Promise'ler reject olursa) burası çalışacak\n    console.error(e);\n}\n",[38,321,322,331,336,362,368,380,392,398,409],{"__ignoreMap":259},[263,323,324,328],{"class":265,"line":266},[263,325,327],{"class":326},"szBVR","try",[263,329,330],{"class":286}," {\n",[263,332,333],{"class":265,"line":273},[263,334,335],{"class":269},"    \u002F\u002F Promise.any metoduna dizi içerisinde birden fazla promise gönderiyoruz.\n",[263,337,338,341,345,348,351,354,356,359],{"class":265,"line":279},[263,339,340],{"class":326},"    const",[263,342,344],{"class":343},"sj4cs"," firstPromiseResolved",[263,346,347],{"class":326}," =",[263,349,350],{"class":326}," await",[263,352,353],{"class":343}," Promise",[263,355,287],{"class":286},[263,357,358],{"class":290},"any",[263,360,361],{"class":286},"(promisesArray);\n",[263,363,365],{"class":265,"line":364},4,[263,366,367],{"class":269},"    \u002F\u002F Promiselerden herhangi biri çözüldüğünde kodun bu bölümü çalışır\n",[263,369,371,374,377],{"class":265,"line":370},5,[263,372,373],{"class":286},"    console.",[263,375,376],{"class":290},"log",[263,378,379],{"class":286},"(firstPromiseResolved);\n",[263,381,383,386,389],{"class":265,"line":382},6,[263,384,385],{"class":286},"} ",[263,387,388],{"class":326},"catch",[263,390,391],{"class":286}," (e) {\n",[263,393,395],{"class":265,"line":394},7,[263,396,397],{"class":269},"    \u002F\u002F Hata oluşursa (tüm Promise'ler reject olursa) burası çalışacak\n",[263,399,401,403,406],{"class":265,"line":400},8,[263,402,373],{"class":286},[263,404,405],{"class":290},"error",[263,407,408],{"class":286},"(e);\n",[263,410,412],{"class":265,"line":411},9,[263,413,414],{"class":286},"}\n",[14,416,417,419,420,423],{},[38,418,54],{},", gönderilen Promise'lerin hiçbirisi çözümlenmezse bir ",[38,421,422],{},"AggregateError"," hatası fırlatır. Bu hatayı catch bloğunda yakalayıp işlem yapabiliriz.",[91,425],{},[94,427,429],{"id":428},"_3-weakref-zayıf-referanslar","3. WeakRef (Zayıf Referanslar)",[14,431,432,434,435,437],{},[38,433,44],{},", zayıf referanslar (weak references) oluşturmak için kullanılan bir sınıftır ve amacı diğer bir nesneye ait zayıf referans tutmaktır. Normalde JavaScript'te başka bir nesnenin referans gösterdiği nesneler çöp toplayıcı (garbage collector) tarafından bellekten temizlenmezken, ",[38,436,44],{}," tipinde bir referans varsa garbage collector bu referansı temizleyebilir.",[14,439,440,441,443],{},"Zayıf bağlantı kurduğunuz bir nesne, güçlü referanslarını kaybettikten sonra her an temizlenebilir. JavaScript motorlarının çöp toplama algoritmaları farklı çalıştığından veya aynı motorun bir sonraki versiyonunda değişebileceğinden davranışın nasıl olacağını kestirmek son derece güçtür. Bu nedenle Ecma, mecbur kalmadıkça ",[38,442,44],{}," kullanımından kaçınmanızı önerir.",[14,445,446,447,449],{},"Eğer ",[38,448,44],{}," kullanmak isterseniz, nesneye erişmeden önce referansın hala var olup olmadığını kontrol etmeniz gerekir:",[254,451,453],{"className":256,"code":452,"language":258,"meta":259,"style":259},"const largeObject = new WeakRef({\n     name: \"CacheMechanism\",\n     type: \"Cache\",\n});\n\n\u002F\u002F Güvenli dereferencing kontrolü\nconst obj = largeObject.deref();\nif (obj) {\n    console.log(obj.name); \u002F\u002F CacheMechanism\n    console.log(obj.type); \u002F\u002F Cache\n} else {\n    console.log(\"Nesne bellekten temizlenmiş.\");\n}\n",[38,454,455,474,485,495,500,506,511,529,537,549,562,572,586],{"__ignoreMap":259},[263,456,457,460,463,465,468,471],{"class":265,"line":266},[263,458,459],{"class":326},"const",[263,461,462],{"class":343}," largeObject",[263,464,347],{"class":326},[263,466,467],{"class":326}," new",[263,469,470],{"class":290}," WeakRef",[263,472,473],{"class":286},"({\n",[263,475,476,479,482],{"class":265,"line":273},[263,477,478],{"class":286},"     name: ",[263,480,481],{"class":282},"\"CacheMechanism\"",[263,483,484],{"class":286},",\n",[263,486,487,490,493],{"class":265,"line":279},[263,488,489],{"class":286},"     type: ",[263,491,492],{"class":282},"\"Cache\"",[263,494,484],{"class":286},[263,496,497],{"class":265,"line":364},[263,498,499],{"class":286},"});\n",[263,501,502],{"class":265,"line":370},[263,503,505],{"emptyLinePlaceholder":504},true,"\n",[263,507,508],{"class":265,"line":382},[263,509,510],{"class":269},"\u002F\u002F Güvenli dereferencing kontrolü\n",[263,512,513,515,518,520,523,526],{"class":265,"line":394},[263,514,459],{"class":326},[263,516,517],{"class":343}," obj",[263,519,347],{"class":326},[263,521,522],{"class":286}," largeObject.",[263,524,525],{"class":290},"deref",[263,527,528],{"class":286},"();\n",[263,530,531,534],{"class":265,"line":400},[263,532,533],{"class":326},"if",[263,535,536],{"class":286}," (obj) {\n",[263,538,539,541,543,546],{"class":265,"line":411},[263,540,373],{"class":286},[263,542,376],{"class":290},[263,544,545],{"class":286},"(obj.name); ",[263,547,548],{"class":269},"\u002F\u002F CacheMechanism\n",[263,550,552,554,556,559],{"class":265,"line":551},10,[263,553,373],{"class":286},[263,555,376],{"class":290},[263,557,558],{"class":286},"(obj.type); ",[263,560,561],{"class":269},"\u002F\u002F Cache\n",[263,563,565,567,570],{"class":265,"line":564},11,[263,566,385],{"class":286},[263,568,569],{"class":326},"else",[263,571,330],{"class":286},[263,573,575,577,579,581,584],{"class":265,"line":574},12,[263,576,373],{"class":286},[263,578,376],{"class":290},[263,580,293],{"class":286},[263,582,583],{"class":282},"\"Nesne bellekten temizlenmiş.\"",[263,585,304],{"class":286},[263,587,589],{"class":265,"line":588},13,[263,590,414],{"class":286},[91,592],{},[94,594,596],{"id":595},"_4-mantıksal-atama-operatörleri-logical-assignment-operators","4. Mantıksal Atama Operatörleri (Logical Assignment Operators)",[14,598,599,600,55,602,231,604,606],{},"ES12 ile birlikte üç yeni mantıksal atama operatörü geldi: ",[38,601,62],{},[38,603,65],{},[38,605,68],{},". Bu operatörler sayesinde bir değişkene değer atarken mantıksal ifadeleri daha kısa yazabiliyoruz.",[608,609,611,612,614],"h4",{"id":610},"es12-operatörü","ES12 ",[38,613,62],{}," Operatörü",[254,616,618],{"className":256,"code":617,"language":258,"meta":259,"style":259},"let number1 = 10;\nlet number2 = 15;\n\nnumber1 &&= number2;\n",[38,619,620,637,651,655],{"__ignoreMap":259},[263,621,622,625,628,631,634],{"class":265,"line":266},[263,623,624],{"class":326},"let",[263,626,627],{"class":286}," number1 ",[263,629,630],{"class":326},"=",[263,632,633],{"class":343}," 10",[263,635,636],{"class":286},";\n",[263,638,639,641,644,646,649],{"class":265,"line":273},[263,640,624],{"class":326},[263,642,643],{"class":286}," number2 ",[263,645,630],{"class":326},[263,647,648],{"class":343}," 15",[263,650,636],{"class":286},[263,652,653],{"class":265,"line":279},[263,654,505],{"emptyLinePlaceholder":504},[263,656,657,660,662],{"class":265,"line":364},[263,658,659],{"class":286},"number1 ",[263,661,62],{"class":326},[263,663,664],{"class":286}," number2;\n",[14,666,667],{},"Bu kodu bu operatör olmadan önce şöyle yazmamız gerekiyordu:",[254,669,671],{"className":256,"code":670,"language":258,"meta":259,"style":259},"let number1 = 10;\nlet number2 = 15;\n\nif (number1) {\n    number1 = number2;\n}\n",[38,672,673,685,697,701,708,717],{"__ignoreMap":259},[263,674,675,677,679,681,683],{"class":265,"line":266},[263,676,624],{"class":326},[263,678,627],{"class":286},[263,680,630],{"class":326},[263,682,633],{"class":343},[263,684,636],{"class":286},[263,686,687,689,691,693,695],{"class":265,"line":273},[263,688,624],{"class":326},[263,690,643],{"class":286},[263,692,630],{"class":326},[263,694,648],{"class":343},[263,696,636],{"class":286},[263,698,699],{"class":265,"line":279},[263,700,505],{"emptyLinePlaceholder":504},[263,702,703,705],{"class":265,"line":364},[263,704,533],{"class":326},[263,706,707],{"class":286}," (number1) {\n",[263,709,710,713,715],{"class":265,"line":370},[263,711,712],{"class":286},"    number1 ",[263,714,630],{"class":326},[263,716,664],{"class":286},[263,718,719],{"class":265,"line":382},[263,720,414],{"class":286},[14,722,723],{},"Özetle, soldaki değişkenin değeri true (truthy) ise sağdaki değişkenin değerini soldakine atıyoruz.",[608,725,611,727,614],{"id":726},"es12-operatörü-1",[38,728,65],{},[254,730,732],{"className":256,"code":731,"language":258,"meta":259,"style":259},"let number1 = null;\nlet number2 = 15;\n\nnumber1 ||= number2;\n",[38,733,734,747,759,763],{"__ignoreMap":259},[263,735,736,738,740,742,745],{"class":265,"line":266},[263,737,624],{"class":326},[263,739,627],{"class":286},[263,741,630],{"class":326},[263,743,744],{"class":343}," null",[263,746,636],{"class":286},[263,748,749,751,753,755,757],{"class":265,"line":273},[263,750,624],{"class":326},[263,752,643],{"class":286},[263,754,630],{"class":326},[263,756,648],{"class":343},[263,758,636],{"class":286},[263,760,761],{"class":265,"line":279},[263,762,505],{"emptyLinePlaceholder":504},[263,764,765,767,769],{"class":265,"line":364},[263,766,659],{"class":286},[263,768,65],{"class":326},[263,770,664],{"class":286},[14,772,773],{},"Eski yazım karşılığı:",[254,775,777],{"className":256,"code":776,"language":258,"meta":259,"style":259},"let number1 = null;\nlet number2 = 15;\n\nif (!number1) {\n    number1 = number2;\n}\n",[38,778,779,791,803,807,820,828],{"__ignoreMap":259},[263,780,781,783,785,787,789],{"class":265,"line":266},[263,782,624],{"class":326},[263,784,627],{"class":286},[263,786,630],{"class":326},[263,788,744],{"class":343},[263,790,636],{"class":286},[263,792,793,795,797,799,801],{"class":265,"line":273},[263,794,624],{"class":326},[263,796,643],{"class":286},[263,798,630],{"class":326},[263,800,648],{"class":343},[263,802,636],{"class":286},[263,804,805],{"class":265,"line":279},[263,806,505],{"emptyLinePlaceholder":504},[263,808,809,811,814,817],{"class":265,"line":364},[263,810,533],{"class":326},[263,812,813],{"class":286}," (",[263,815,816],{"class":326},"!",[263,818,819],{"class":286},"number1) {\n",[263,821,822,824,826],{"class":265,"line":370},[263,823,712],{"class":286},[263,825,630],{"class":326},[263,827,664],{"class":286},[263,829,830],{"class":265,"line":382},[263,831,414],{"class":286},[14,833,834],{},"Soldaki değişken false (falsy) ise sağdaki değişkenin değerini soldaki değişkene atıyoruz.",[608,836,611,838,614],{"id":837},"es12-operatörü-2",[38,839,68],{},[254,841,843],{"className":256,"code":842,"language":258,"meta":259,"style":259},"let number1 = null;\nlet number2 = 15;\n\nnumber1 ??= number2;\n",[38,844,845,857,869,873],{"__ignoreMap":259},[263,846,847,849,851,853,855],{"class":265,"line":266},[263,848,624],{"class":326},[263,850,627],{"class":286},[263,852,630],{"class":326},[263,854,744],{"class":343},[263,856,636],{"class":286},[263,858,859,861,863,865,867],{"class":265,"line":273},[263,860,624],{"class":326},[263,862,643],{"class":286},[263,864,630],{"class":326},[263,866,648],{"class":343},[263,868,636],{"class":286},[263,870,871],{"class":265,"line":279},[263,872,505],{"emptyLinePlaceholder":504},[263,874,875,877,879],{"class":265,"line":364},[263,876,659],{"class":286},[263,878,68],{"class":326},[263,880,664],{"class":286},[14,882,773],{},[254,884,886],{"className":256,"code":885,"language":258,"meta":259,"style":259},"let number1 = null;\nlet number2 = 15;\n\nif (number1 == null || number1 == undefined) {\n    number1 = number2;\n}\n",[38,887,888,900,912,916,941,949],{"__ignoreMap":259},[263,889,890,892,894,896,898],{"class":265,"line":266},[263,891,624],{"class":326},[263,893,627],{"class":286},[263,895,630],{"class":326},[263,897,744],{"class":343},[263,899,636],{"class":286},[263,901,902,904,906,908,910],{"class":265,"line":273},[263,903,624],{"class":326},[263,905,643],{"class":286},[263,907,630],{"class":326},[263,909,648],{"class":343},[263,911,636],{"class":286},[263,913,914],{"class":265,"line":279},[263,915,505],{"emptyLinePlaceholder":504},[263,917,918,920,923,926,928,931,933,935,938],{"class":265,"line":364},[263,919,533],{"class":326},[263,921,922],{"class":286}," (number1 ",[263,924,925],{"class":326},"==",[263,927,744],{"class":343},[263,929,930],{"class":326}," ||",[263,932,627],{"class":286},[263,934,925],{"class":326},[263,936,937],{"class":343}," undefined",[263,939,940],{"class":286},") {\n",[263,942,943,945,947],{"class":265,"line":370},[263,944,712],{"class":286},[263,946,630],{"class":326},[263,948,664],{"class":286},[263,950,951],{"class":265,"line":382},[263,952,414],{"class":286},[14,954,955,956,194,958,960,961,963,964,190,966,194,968,970],{},"Bu operatör soldaki değişken ",[38,957,193],{},[38,959,197],{}," (tanımsız) ise sağdaki değişkenin değerini soldakine atar. ",[38,962,65],{}," operatörü her türlü falsy değerde (0, boş string vb.) çalışırken, ",[38,965,68],{},[38,967,193],{},[38,969,197],{}," değerlerinde çalışır.",[91,972],{},[94,974,976],{"id":975},"_5-nümerik-ayraçlar-numeric-separators","5. Nümerik Ayraçlar (Numeric Separators)",[14,978,979,980,983,984,987],{},"Büyük sayılarla çalışmak genelde zordur. Kod içerisinde ",[38,981,982],{},"123456789473"," şeklinde bir sayı gördüğünüzde bunun büyüklüğünü algılamak zor olur. ES12 ile birlikte bu tarz büyük sayılar için alt çizgi (",[38,985,986],{},"_",") kullanarak ayraç tanımlama şansına sahip olduk:",[254,989,991],{"className":256,"code":990,"language":258,"meta":259,"style":259},"\u002F\u002F ES12'den önce\nconst number = 123456789473;\n\n\u002F\u002F ES12'den sonra\nconst number = 123_456_789_473; \u002F\u002F 123 milyar, 456 milyon...\n",[38,992,993,998,1012,1016,1021],{"__ignoreMap":259},[263,994,995],{"class":265,"line":266},[263,996,997],{"class":269},"\u002F\u002F ES12'den önce\n",[263,999,1000,1002,1005,1007,1010],{"class":265,"line":273},[263,1001,459],{"class":326},[263,1003,1004],{"class":343}," number",[263,1006,347],{"class":326},[263,1008,1009],{"class":343}," 123456789473",[263,1011,636],{"class":286},[263,1013,1014],{"class":265,"line":279},[263,1015,505],{"emptyLinePlaceholder":504},[263,1017,1018],{"class":265,"line":364},[263,1019,1020],{"class":269},"\u002F\u002F ES12'den sonra\n",[263,1022,1023,1025,1027,1029,1032,1035],{"class":265,"line":370},[263,1024,459],{"class":326},[263,1026,1004],{"class":343},[263,1028,347],{"class":326},[263,1030,1031],{"class":343}," 123_456_789_473",[263,1033,1034],{"class":286},"; ",[263,1036,1037],{"class":269},"\u002F\u002F 123 milyar, 456 milyon...\n",[91,1039],{},[1041,1042,1044],"h5",{"id":1043},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,1046,1047,1050],{},[25,1048,1049],{},"11.05.2022: Yazı özeti düzenlendi.",[25,1051,1052,1053,1055,1056,1058],{},"21.06.2026: ",[38,1054,40],{}," try-catch bloğundaki sözdizimi (syntax) hatası giderildi, ",[38,1057,44],{},"'in tanımsız durumlarındaki çökme riski güvenli kontrol mekanizması eklenerek düzeltildi. Türkçe imla hataları (standardıdır, tarayıcıya, Node.js vb.) giderildi, TL;DR özet ve mantıksal operatörler hızlı referans tablosu eklendi.",[1060,1061,1062],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":259,"searchDepth":273,"depth":273,"links":1064},[1065,1066],{"id":96,"depth":279,"text":97},{"id":206,"depth":273,"text":207,"children":1067},[1068,1069,1070,1071,1072],{"id":245,"depth":279,"text":246},{"id":309,"depth":279,"text":310},{"id":428,"depth":279,"text":429},{"id":595,"depth":279,"text":596},{"id":975,"depth":279,"text":976},[1074],"technical",null,"2021-10-18","ECMAScript 2021 (ES12) ile gelen yenilikler: replaceAll, Promise.any, WeakRef, mantıksal atama operatörleri ve nümerik ayraçlar.",false,"md","\u002Fimages\u002Fhero\u002Fes12.avif",{},"\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir",{"title":6,"description":1077},"es12-nedir-ecmascript-2021-nedir","tr\u002Fes12-nedir-ecmascript-2021-nedir",[1087,1088,258],"ecma","ecmascript","2026-06-21","gY2gTH6HLMSt_yo52JjZPx-73Z6bQ_Qls7Nn2NOGWlg",{"prev":1092,"next":1095,"others":1098,"lucky":1219,"readingTime":364},{"path":1093,"title":1094},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",{"path":1096,"title":1097},"\u002Ftr\u002Fgo-veri-tipleri-struct","Go Veri Tipleri: Struct",[1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216],{"path":1100,"title":1101},"\u002Ftr\u002Fwsl-2-kurulumu-6-kolay-adim","WSL 2 Kurulumu - 6 kolay adım",{"path":1103,"title":1104},"\u002Ftr\u002Fes15-nedir-ecmascript-2024-nedir","ES15 nedir? ECMAScript 2024 nedir?",{"path":1106,"title":1107},"\u002Ftr\u002Fadapter-tasarim-deseni-nedir","Adapter Tasarım Deseni Nedir?",{"path":1109,"title":1110},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-factory-method-nedir","Factory Method Tasarım Deseni Nedir?",{"path":1112,"title":1113},"\u002Ftr\u002Fvue-js-nedir","Vue.js Nedir? Yeni Başlayanlar İçin Rehber",{"path":1115,"title":1116},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":1118,"title":1119},"\u002Ftr\u002Fes17-nedir-ecmascript-2026-nedir","ES17 nedir? ECMAScript 2026 nedir?",{"path":1121,"title":1122},"\u002Ftr\u002Ftemplate-method-tasarim-deseni-nedir","Template Method Tasarım Deseni Nedir?",{"path":1124,"title":1125},"\u002Ftr\u002Fvue-3-hakkinda-bilmeniz-gerekenler-yenilikler","Vue 3 Hakkında Bilmeniz Gerekenler ve Yenilikler",{"path":1127,"title":1128},"\u002Ftr\u002Fes8-nedir-ecmascript-2017-nedir","ES8 Nedir? ECMAScript 2017 Nedir?",{"path":1130,"title":1131},"\u002Ftr\u002Ffull-stack-proje-gelistiriyoruz","Full Stack Proje Geliştiriyoruz",{"path":1133,"title":1134},"\u002Ftr\u002Fflyweight-tasarim-deseni-nedir","Flyweight Tasarım Deseni Nedir?",{"path":1136,"title":1137},"\u002Ftr\u002Fwindows-10-golang-kurulumu","Windows 10 ve 11'de Golang Kurulumu ve GOPATH Yapılandırması",{"path":1139,"title":1140},"\u002Ftr\u002Fmutable-ve-immutable-kavrami","Mutable ve Immutable Kavramları Nedir?",{"path":1142,"title":1143},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":1145,"title":1146},"\u002Ftr\u002Fmerhabadunya","Merhaba Dünya",{"path":1148,"title":1149},"\u002Ftr\u002Fdocker-ve-portainer-kurulumu","Docker ve Portainer Kurulumu",{"path":1151,"title":1152},"\u002Ftr\u002Fnext-js-on-bellegi-nasil-yenilenir-on-demand-cache-regeneration","Next.js Önbelleği Nasıl Yenilenir? \"On-Demand Cache Regeneration\"",{"path":1154,"title":1155},"\u002Ftr\u002Fdecorator-tasarim-deseni-nedir","Decorator Tasarım Deseni Nedir?",{"path":1157,"title":1158},"\u002Ftr\u002Fmerhaba-gluster","Merhaba Gluster: Dağıtık Dosya Sistemi Nedir?",{"path":1160,"title":1161},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":1163,"title":1164},"\u002Ftr\u002Fvisitor-tasarim-deseni-nedir","Visitor Tasarım Deseni Nedir?",{"path":1166,"title":1167},"\u002Ftr\u002Frest-api-hata-yonetimi","REST Api Hata Yönetimi",{"path":1169,"title":1170},"\u002Ftr\u002Fgo-programlama-dilinin-ozellikleri","Go Programlama Dilinin Özellikleri",{"path":1172,"title":1173},"\u002Ftr\u002Fdocker-nedir","Docker Nedir?",{"path":1175,"title":1176},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?",{"path":1178,"title":1179},"\u002Ftr\u002Fjavascriptde-moduller","JavaScript'te Modüller",{"path":1181,"title":1182},"\u002Ftr\u002Fnostalji-ibibik-online","Nostalji: İbibik Online (1998'den Bir Web Macerası)",{"path":1184,"title":1185},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",{"path":1187,"title":1188},"\u002Ftr\u002Flitespeed-web-server-performans-artisi","Konfor Alanından Çıkıp, Konforlu Bir VPS'e Geçmek: LiteSpeed Web Server",{"path":1190,"title":1191},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":1193,"title":1194},"\u002Ftr\u002Fphp-ve-makine-ogrenimi-php-ml-kutuphanesi","PHP ve Makine Öğrenimi: PHP-ML Kütüphanesi ile Pratik Çözümler",{"path":1196,"title":1197},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":1199,"title":1200},"\u002Ftr\u002Fubuntu-20-04-uzerinde-cyberpanel-kurulumu","Ubuntu 20.04 üzerinde CyberPanel kurulumu",{"path":1202,"title":1203},"\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":1205,"title":1206},"\u002Ftr\u002Fphp-generator-ve-iterator-farki","PHP'de Generator ve Iterator Arasındaki Temel Farklar",{"path":1208,"title":1209},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":1211,"title":1212},"\u002Ftr\u002Fdesign-patterns-tasarim-desenleri-nedir","Design Patterns \u002F Tasarım Desenleri nedir?",{"path":1214,"title":1215},"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı",{"path":1217,"title":1218},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",{"path":1220,"title":1221},"\u002Ftr\u002Fubuntu-24-04-uzerinde-cyberpanel-kurulumu","Ubuntu 24.04 LTS ve 22.04 LTS Üzerinde CyberPanel Kurulumu",[1223,1225,1226,1227],{"path":1160,"title":1161,"date":1224},"2026-06-20",{"path":1115,"title":1116,"date":1224},{"path":1103,"title":1104,"date":1224},{"path":1228,"title":1229,"date":1224},"\u002Ftr\u002Fes16-nedir-ecmascript-2025-nedir","ES16 nedir? ECMAScript 2025 nedir?",[1231,1235,1239],{"path":1232,"title":1233,"date":1234},"\u002Ftr\u002Fdocker-ile-mariadb-kurulumu","Docker ile MariaDB Kurulumu","2021-03-01",{"path":1236,"title":1237,"date":1238},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?","2021-07-27",{"path":1214,"title":1215,"date":1240},"2021-02-01",1782142002584]