[{"data":1,"prerenderedAt":1185},["ShallowReactive",2],{"post-\u002Ftr\u002Fes8-nedir-ecmascript-2017-nedir":3},{"page":4,"translation":1028,"nav":1042,"related":1170,"random":1179},{"id":5,"title":6,"body":7,"categories":1026,"category":1028,"date":1029,"description":1030,"draft":1031,"extension":1032,"image":1033,"kind":1028,"lang":142,"meta":1034,"navigation":461,"path":1035,"readingTime":458,"seo":1036,"slug":1037,"stem":1038,"tags":1039,"translationKey":1028,"type":1027,"updated":1040,"__hash__":1041},"postsTr\u002Ftr\u002Fes8-nedir-ecmascript-2017-nedir.md","ES8 Nedir? ECMAScript 2017 Nedir?",{"type":8,"value":9,"toc":1014},"minimark",[10,67,78,81,86,89,128,130,135,254,256,260,268,336,338,342,350,396,398,402,407,476,487,489,493,496,625,627,631,634,692,694,698,701,779,781,785,793,807,813,995,997,1002,1010],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,36],"ul",{},[25,26,27,30,31,35],"li",{},[18,28,29],{},"Nedir:"," Haziran 2017'de yayınlanan ve JavaScript ekosistemine asenkron programlamayı kökten kolaylaştıran ",[32,33,34],"code",{},"async\u002Fawait"," başta olmak üzere birçok pratik metot kazandıran ECMAScript sürümüdür.",[25,37,38,41],{},[18,39,40],{},"Öne Çıkan Yenilikler:",[22,42,43,49,55,61],{},[25,44,45,48],{},[18,46,47],{},"Async\u002FAwait:"," Promise tabanlı asenkron kodları senkron gibi yazmayı sağlar.",[25,50,51,54],{},[18,52,53],{},"Object.entries() \u002F Object.values():"," Nesneleri anahtar-değer veya sadece değer dizilerine dönüştürür.",[25,56,57,60],{},[18,58,59],{},"String padding (padStart\u002FpadEnd):"," Metinlerin başına veya sonuna tamamlama karakterleri ekler.",[25,62,63,66],{},[18,64,65],{},"Trailing Commas:"," Fonksiyon parametre ve çağrılarının sonunda virgül bırakılmasına izin verir.",[14,68,69],{},[18,70,71,72,77],{},"ES8 (ECMAScript 2017), Haziran 2017'de yayınlanan 8. ",[73,74,76],"a",{"href":75},"\u002Ftr\u002Fecmascript-nedir-ecmascript-ne-degildir-bilinmesi-gerekenler","ECMAScript"," sürümüdür.",[79,80],"hr",{},[82,83,85],"h2",{"id":84},"es8-ile-gelen-yenilikler","ES8 ile Gelen Yenilikler",[14,87,88],{},"ES8 ile birlikte JavaScript'e aşağıdaki yenilikler gelmiştir:",[22,90,91,96,101,106,111,116,119],{},[25,92,93],{},[32,94,95],{},"String.prototype.padStart",[25,97,98],{},[32,99,100],{},"String.prototype.padEnd",[25,102,103],{},[32,104,105],{},"Object.entries",[25,107,108],{},[32,109,110],{},"Object.values",[25,112,113],{},[32,114,115],{},"Object.getOwnPropertyDescriptors",[25,117,118],{},"Trailing commas (Sondaki virgüller)",[25,120,121,124,125],{},[32,122,123],{},"async","\u002F",[32,126,127],{},"await",[79,129],{},[131,132,134],"h3",{"id":133},"es8-yenilikleri-hızlı-referans-tablosu","ES8 Yenilikleri Hızlı Referans Tablosu",[136,137,138,155],"table",{},[139,140,141],"thead",{},[142,143,144,149,152],"tr",{},[145,146,148],"th",{"align":147},"left","Özellik",[145,150,151],{"align":147},"Kullanım Amacı",[145,153,154],{"align":147},"Örnek Çıktı",[156,157,158,180,200,221,238],"tbody",{},[142,159,160,168,171],{},[161,162,163],"td",{"align":147},[18,164,165],{},[32,166,167],{},"padStart(len, char)",[161,169,170],{"align":147},"Metni belirtilen uzunluğa ulaşana kadar baştan karakterle doldurur.",[161,172,173,176,177],{"align":147},[32,174,175],{},"'5'.padStart(3, '0')"," ➡️ ",[32,178,179],{},"'005'",[142,181,182,189,192],{},[161,183,184],{"align":147},[18,185,186],{},[32,187,188],{},"padEnd(len, char)",[161,190,191],{"align":147},"Metni belirtilen uzunluğa ulaşana kadar sondan karakterle doldurur.",[161,193,194,176,197],{"align":147},[32,195,196],{},"'abc'.padEnd(6, '.')",[32,198,199],{},"'abc...'",[142,201,202,209,216],{},[161,203,204],{"align":147},[18,205,206],{},[32,207,208],{},"Object.entries(obj)",[161,210,211,212,215],{"align":147},"Nesneyi ",[32,213,214],{},"[anahtar, değer]"," çiftlerinden oluşan diziye dönüştürür.",[161,217,218],{"align":147},[32,219,220],{},"[['id', 1], ['name', 'john']]",[142,222,223,230,233],{},[161,224,225],{"align":147},[18,226,227],{},[32,228,229],{},"Object.values(obj)",[161,231,232],{"align":147},"Nesnenin sadece değerlerini dizi olarak döndürür.",[161,234,235],{"align":147},[32,236,237],{},"['Blue', 'Orange', 'Yellow']",[142,239,240,246,249],{},[161,241,242],{"align":147},[18,243,244],{},[32,245,34],{},[161,247,248],{"align":147},"Asenkron kodların okunabilirliğini artırır, callback zincirlerini önler.",[161,250,251],{"align":147},[32,252,253],{},"const result = await fetch(...)",[79,255],{},[131,257,259],{"id":258},"padstart","padStart()",[14,261,262,264,265,267],{},[32,263,259],{},", stringlerin başına istediğiniz karakteri belirli bir uzunluğa tamamlayacak şekilde ekler. ",[32,266,259],{}," metodu iki parametre alır; ilki istenen uzunluk, ikincisi ise eklenecek karakter\u002Fstringdir.",[269,270,275],"pre",{"className":271,"code":272,"language":273,"meta":274,"style":274},"language-javascript shiki shiki-themes github-light github-dark","let amount = '5';\nconsole.log(amount.padStart(3, '0')); \u002F\u002F 005\n","javascript","",[32,276,277,300],{"__ignoreMap":274},[278,279,282,286,290,293,297],"span",{"class":280,"line":281},"line",1,[278,283,285],{"class":284},"szBVR","let",[278,287,289],{"class":288},"sVt8B"," amount ",[278,291,292],{"class":284},"=",[278,294,296],{"class":295},"sZZnC"," '5'",[278,298,299],{"class":288},";\n",[278,301,303,306,310,313,316,319,323,326,329,332],{"class":280,"line":302},2,[278,304,305],{"class":288},"console.",[278,307,309],{"class":308},"sScJk","log",[278,311,312],{"class":288},"(amount.",[278,314,315],{"class":308},"padStart",[278,317,318],{"class":288},"(",[278,320,322],{"class":321},"sj4cs","3",[278,324,325],{"class":288},", ",[278,327,328],{"class":295},"'0'",[278,330,331],{"class":288},")); ",[278,333,335],{"class":334},"sJ8bj","\u002F\u002F 005\n",[79,337],{},[131,339,341],{"id":340},"padend","padEnd()",[14,343,344,346,347,349],{},[32,345,259],{}," ile benzer şekilde ve parametrelerle çalışan ",[32,348,341],{},", belirtilen metni stringin sonuna ekler.",[269,351,353],{"className":271,"code":352,"language":273,"meta":274,"style":274},"let str = 'abc';\nconsole.log(str.padEnd(6, '.')); \u002F\u002F abc...\n",[32,354,355,369],{"__ignoreMap":274},[278,356,357,359,362,364,367],{"class":280,"line":281},[278,358,285],{"class":284},[278,360,361],{"class":288}," str ",[278,363,292],{"class":284},[278,365,366],{"class":295}," 'abc'",[278,368,299],{"class":288},[278,370,371,373,375,378,381,383,386,388,391,393],{"class":280,"line":302},[278,372,305],{"class":288},[278,374,309],{"class":308},[278,376,377],{"class":288},"(str.",[278,379,380],{"class":308},"padEnd",[278,382,318],{"class":288},[278,384,385],{"class":321},"6",[278,387,325],{"class":288},[278,389,390],{"class":295},"'.'",[278,392,331],{"class":288},[278,394,395],{"class":334},"\u002F\u002F abc...\n",[79,397],{},[131,399,401],{"id":400},"objectentries","Object.entries()",[14,403,404,406],{},[32,405,401],{}," metodu, kendisine verilen bir nesneyi anahtar-değer ikilileri şeklinde dizilere (array) dönüştürür.",[269,408,410],{"className":271,"code":409,"language":273,"meta":274,"style":274},"const student = { id: 1, name: \"john\" };\nconst studentArray = Object.entries(student); \n\nconsole.log(studentArray); \u002F\u002F [ [ 'id', 1 ], [ 'name', 'john' ] ]\n",[32,411,412,438,456,463],{"__ignoreMap":274},[278,413,414,417,420,423,426,429,432,435],{"class":280,"line":281},[278,415,416],{"class":284},"const",[278,418,419],{"class":321}," student",[278,421,422],{"class":284}," =",[278,424,425],{"class":288}," { id: ",[278,427,428],{"class":321},"1",[278,430,431],{"class":288},", name: ",[278,433,434],{"class":295},"\"john\"",[278,436,437],{"class":288}," };\n",[278,439,440,442,445,447,450,453],{"class":280,"line":302},[278,441,416],{"class":284},[278,443,444],{"class":321}," studentArray",[278,446,422],{"class":284},[278,448,449],{"class":288}," Object.",[278,451,452],{"class":308},"entries",[278,454,455],{"class":288},"(student); \n",[278,457,459],{"class":280,"line":458},3,[278,460,462],{"emptyLinePlaceholder":461},true,"\n",[278,464,466,468,470,473],{"class":280,"line":465},4,[278,467,305],{"class":288},[278,469,309],{"class":308},[278,471,472],{"class":288},"(studentArray); ",[278,474,475],{"class":334},"\u002F\u002F [ [ 'id', 1 ], [ 'name', 'john' ] ]\n",[14,477,478,482,483,486],{},[73,479,481],{"href":480},"\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir","ES10"," ile birlikte gelen ",[32,484,485],{},"Object.fromEntries()"," metodu ise bu işlemin tam tersini gerçekleştirerek dizilerden tekrar nesne üretir.",[79,488],{},[131,490,492],{"id":491},"objectgetownpropertydescriptors","Object.getOwnPropertyDescriptors()",[14,494,495],{},"Bir nesnenin tüm kendi nitelik tanımlayıcılarını (property descriptors) içeren bir nesne döndürür. Eğer nesnenin herhangi bir tanımlı niteliği yoksa boş bir nesne döndürür.",[269,497,499],{"className":271,"code":498,"language":273,"meta":274,"style":274},"const object1 = {\n  property1: 42\n};\n\nconst descriptors1 = Object.getOwnPropertyDescriptors(object1);\n\nconsole.log(descriptors1.property1.writable);     \u002F\u002F true\nconsole.log(descriptors1.property1.value);        \u002F\u002F 42\nconsole.log(descriptors1);\n\u002F*\nÇıktı:\n{\n  property1: { value: 42, writable: true, enumerable: true, configurable: true }\n}\n*\u002F\n",[32,500,501,513,521,526,530,548,553,566,579,589,595,601,607,613,619],{"__ignoreMap":274},[278,502,503,505,508,510],{"class":280,"line":281},[278,504,416],{"class":284},[278,506,507],{"class":321}," object1",[278,509,422],{"class":284},[278,511,512],{"class":288}," {\n",[278,514,515,518],{"class":280,"line":302},[278,516,517],{"class":288},"  property1: ",[278,519,520],{"class":321},"42\n",[278,522,523],{"class":280,"line":458},[278,524,525],{"class":288},"};\n",[278,527,528],{"class":280,"line":465},[278,529,462],{"emptyLinePlaceholder":461},[278,531,533,535,538,540,542,545],{"class":280,"line":532},5,[278,534,416],{"class":284},[278,536,537],{"class":321}," descriptors1",[278,539,422],{"class":284},[278,541,449],{"class":288},[278,543,544],{"class":308},"getOwnPropertyDescriptors",[278,546,547],{"class":288},"(object1);\n",[278,549,551],{"class":280,"line":550},6,[278,552,462],{"emptyLinePlaceholder":461},[278,554,556,558,560,563],{"class":280,"line":555},7,[278,557,305],{"class":288},[278,559,309],{"class":308},[278,561,562],{"class":288},"(descriptors1.property1.writable);     ",[278,564,565],{"class":334},"\u002F\u002F true\n",[278,567,569,571,573,576],{"class":280,"line":568},8,[278,570,305],{"class":288},[278,572,309],{"class":308},[278,574,575],{"class":288},"(descriptors1.property1.value);        ",[278,577,578],{"class":334},"\u002F\u002F 42\n",[278,580,582,584,586],{"class":280,"line":581},9,[278,583,305],{"class":288},[278,585,309],{"class":308},[278,587,588],{"class":288},"(descriptors1);\n",[278,590,592],{"class":280,"line":591},10,[278,593,594],{"class":334},"\u002F*\n",[278,596,598],{"class":280,"line":597},11,[278,599,600],{"class":334},"Çıktı:\n",[278,602,604],{"class":280,"line":603},12,[278,605,606],{"class":334},"{\n",[278,608,610],{"class":280,"line":609},13,[278,611,612],{"class":334},"  property1: { value: 42, writable: true, enumerable: true, configurable: true }\n",[278,614,616],{"class":280,"line":615},14,[278,617,618],{"class":334},"}\n",[278,620,622],{"class":280,"line":621},15,[278,623,624],{"class":334},"*\u002F\n",[79,626],{},[131,628,630],{"id":629},"objectvalues","Object.values()",[14,632,633],{},"Bir nesnenin sadece değerlerini (values) bir dizi (array) olarak döndürür.",[269,635,637],{"className":271,"code":636,"language":273,"meta":274,"style":274},"const colors = { B: 'Blue', OR: \"Orange\", YE: \"Yellow\", PI: \"Pink\" };\nconsole.log(Object.values(colors)); \u002F\u002F ['Blue', 'Orange', 'Yellow', 'Pink']\n",[32,638,639,674],{"__ignoreMap":274},[278,640,641,643,646,648,651,654,657,660,663,666,669,672],{"class":280,"line":281},[278,642,416],{"class":284},[278,644,645],{"class":321}," colors",[278,647,422],{"class":284},[278,649,650],{"class":288}," { B: ",[278,652,653],{"class":295},"'Blue'",[278,655,656],{"class":288},", OR: ",[278,658,659],{"class":295},"\"Orange\"",[278,661,662],{"class":288},", YE: ",[278,664,665],{"class":295},"\"Yellow\"",[278,667,668],{"class":288},", PI: ",[278,670,671],{"class":295},"\"Pink\"",[278,673,437],{"class":288},[278,675,676,678,680,683,686,689],{"class":280,"line":302},[278,677,305],{"class":288},[278,679,309],{"class":308},[278,681,682],{"class":288},"(Object.",[278,684,685],{"class":308},"values",[278,687,688],{"class":288},"(colors)); ",[278,690,691],{"class":334},"\u002F\u002F ['Blue', 'Orange', 'Yellow', 'Pink']\n",[79,693],{},[131,695,697],{"id":696},"trailing-commas-sondaki-parametre-virgülleri","Trailing Commas (Sondaki Parametre Virgülleri)",[14,699,700],{},"ES5'e kadar bir dizi ya da nesnenin sonundaki virgül hata veriyordu. Bu durum ES5 ile hata olmaktan çıksa da fonksiyon tanımları ve fonksiyon çağrılarında parametreleri virgülle bitiremiyorduk. ES8 ile birlikte fonksiyon tanımları ve çağrılarında da trailing comma kullanımının önü açılmış oldu:",[269,702,704],{"className":271,"code":703,"language":273,"meta":274,"style":274},"\u002F\u002F Fonksiyon tanımında son parametreden sonra virgül kullanımı\nfunction sendMessage(message, email1, email2,) {\n  \u002F\u002F ...\n}\n\n\u002F\u002F Fonksiyon çağrısında son parametreden sonra virgül kullanımı\nsendMessage(\"Merhaba\", \"test1@mail.com\", \"test2@mail.com\",);\n",[32,705,706,711,738,743,747,751,756],{"__ignoreMap":274},[278,707,708],{"class":280,"line":281},[278,709,710],{"class":334},"\u002F\u002F Fonksiyon tanımında son parametreden sonra virgül kullanımı\n",[278,712,713,716,719,721,725,727,730,732,735],{"class":280,"line":302},[278,714,715],{"class":284},"function",[278,717,718],{"class":308}," sendMessage",[278,720,318],{"class":288},[278,722,724],{"class":723},"s4XuR","message",[278,726,325],{"class":288},[278,728,729],{"class":723},"email1",[278,731,325],{"class":288},[278,733,734],{"class":723},"email2",[278,736,737],{"class":288},",) {\n",[278,739,740],{"class":280,"line":458},[278,741,742],{"class":334},"  \u002F\u002F ...\n",[278,744,745],{"class":280,"line":465},[278,746,618],{"class":288},[278,748,749],{"class":280,"line":532},[278,750,462],{"emptyLinePlaceholder":461},[278,752,753],{"class":280,"line":550},[278,754,755],{"class":334},"\u002F\u002F Fonksiyon çağrısında son parametreden sonra virgül kullanımı\n",[278,757,758,761,763,766,768,771,773,776],{"class":280,"line":555},[278,759,760],{"class":308},"sendMessage",[278,762,318],{"class":288},[278,764,765],{"class":295},"\"Merhaba\"",[278,767,325],{"class":288},[278,769,770],{"class":295},"\"test1@mail.com\"",[278,772,325],{"class":288},[278,774,775],{"class":295},"\"test2@mail.com\"",[278,777,778],{"class":288},",);\n",[79,780],{},[131,782,784],{"id":783},"asyncawait","Async\u002FAwait",[14,786,787,788,124,790,792],{},"Eskiden çağırdığımız asenkron fonksiyonlarda, belirli olaylar gerçekleştiğinde çalıştırılmak üzere callback fonksiyonları göndermek zorundaydık. ES8 ile birlikte gelen ",[32,789,123],{},[32,791,127],{}," yapısı, asenkron işlemler için çok daha kullanışlı, temiz ve okunabilir bir çözüm getirdi.",[14,794,795,798,799,802,803,806],{},[32,796,797],{},"async function"," anahtar kelimeleri ile tanımladığımız fonksiyonlar bir ",[32,800,801],{},"AsyncFunction"," nesnesi döndürür. Bu şekilde tanımlanmış bir fonksiyon çağrıldığında bir ",[32,804,805],{},"Promise"," döndürür. Bir asenkron fonksiyon değer döndüreceği zaman bu Promise çözülür (resolve). Eğer bir hata gerçekleşirse Promise reddedilir (reject).",[14,808,809,810,812],{},"Asenkron bir fonksiyon ",[32,811,127],{}," tanımlaması içerebilir. Bu tanım, fonksiyonun çalışmasını durdurur ve Promise'in yanıt döndürmesini bekler. Yanıt alınınca asenkron fonksiyonun çalışmasına devam edilir.",[269,814,816],{"className":271,"code":815,"language":273,"meta":274,"style":274},"function resolveAfter2Seconds() {\n  return new Promise(resolve => {\n    setTimeout(() => {\n      resolve('çözüldü');\n    }, 2000);\n  });\n}\n\n\u002F\u002F Fonksiyonu asenkron olarak tanımlıyoruz.\nasync function asyncCall() {\n  console.log(\"Promise'i çağırıyoruz\");\n  \u002F\u002F Promise tamamlanıp değer döndürülene kadar duraklar ve değer dönünce result sabitine atar.\n  const result = await resolveAfter2Seconds();\n  console.log(result);\n  \u002F\u002F beklenen çıktı: \"çözüldü\"\n}\n\nasyncCall();\n\n\u002F\u002F Kaynak: https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FStatements\u002Fasync_function\n",[32,817,818,828,849,862,875,885,890,894,898,903,915,929,934,952,961,966,971,976,984,989],{"__ignoreMap":274},[278,819,820,822,825],{"class":280,"line":281},[278,821,715],{"class":284},[278,823,824],{"class":308}," resolveAfter2Seconds",[278,826,827],{"class":288},"() {\n",[278,829,830,833,836,839,841,844,847],{"class":280,"line":302},[278,831,832],{"class":284},"  return",[278,834,835],{"class":284}," new",[278,837,838],{"class":321}," Promise",[278,840,318],{"class":288},[278,842,843],{"class":723},"resolve",[278,845,846],{"class":284}," =>",[278,848,512],{"class":288},[278,850,851,854,857,860],{"class":280,"line":458},[278,852,853],{"class":308},"    setTimeout",[278,855,856],{"class":288},"(() ",[278,858,859],{"class":284},"=>",[278,861,512],{"class":288},[278,863,864,867,869,872],{"class":280,"line":465},[278,865,866],{"class":308},"      resolve",[278,868,318],{"class":288},[278,870,871],{"class":295},"'çözüldü'",[278,873,874],{"class":288},");\n",[278,876,877,880,883],{"class":280,"line":532},[278,878,879],{"class":288},"    }, ",[278,881,882],{"class":321},"2000",[278,884,874],{"class":288},[278,886,887],{"class":280,"line":550},[278,888,889],{"class":288},"  });\n",[278,891,892],{"class":280,"line":555},[278,893,618],{"class":288},[278,895,896],{"class":280,"line":568},[278,897,462],{"emptyLinePlaceholder":461},[278,899,900],{"class":280,"line":581},[278,901,902],{"class":334},"\u002F\u002F Fonksiyonu asenkron olarak tanımlıyoruz.\n",[278,904,905,907,910,913],{"class":280,"line":591},[278,906,123],{"class":284},[278,908,909],{"class":284}," function",[278,911,912],{"class":308}," asyncCall",[278,914,827],{"class":288},[278,916,917,920,922,924,927],{"class":280,"line":597},[278,918,919],{"class":288},"  console.",[278,921,309],{"class":308},[278,923,318],{"class":288},[278,925,926],{"class":295},"\"Promise'i çağırıyoruz\"",[278,928,874],{"class":288},[278,930,931],{"class":280,"line":603},[278,932,933],{"class":334},"  \u002F\u002F Promise tamamlanıp değer döndürülene kadar duraklar ve değer dönünce result sabitine atar.\n",[278,935,936,939,942,944,947,949],{"class":280,"line":609},[278,937,938],{"class":284},"  const",[278,940,941],{"class":321}," result",[278,943,422],{"class":284},[278,945,946],{"class":284}," await",[278,948,824],{"class":308},[278,950,951],{"class":288},"();\n",[278,953,954,956,958],{"class":280,"line":615},[278,955,919],{"class":288},[278,957,309],{"class":308},[278,959,960],{"class":288},"(result);\n",[278,962,963],{"class":280,"line":621},[278,964,965],{"class":334},"  \u002F\u002F beklenen çıktı: \"çözüldü\"\n",[278,967,969],{"class":280,"line":968},16,[278,970,618],{"class":288},[278,972,974],{"class":280,"line":973},17,[278,975,462],{"emptyLinePlaceholder":461},[278,977,979,982],{"class":280,"line":978},18,[278,980,981],{"class":308},"asyncCall",[278,983,951],{"class":288},[278,985,987],{"class":280,"line":986},19,[278,988,462],{"emptyLinePlaceholder":461},[278,990,992],{"class":280,"line":991},20,[278,993,994],{"class":334},"\u002F\u002F Kaynak: https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FStatements\u002Fasync_function\n",[79,996],{},[998,999,1001],"h5",{"id":1000},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,1003,1004,1007],{},[25,1005,1006],{},"11.05.2022: Yazı özeti düzenlendi.",[25,1008,1009],{},"21.06.2026: Kod örneklerindeki çalışma zamanı hataları giderildi, yazım hataları düzeltildi, TL;DR özet ve metot karşılaştırma tablosu eklendi.",[1011,1012,1013],"style",{},"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 pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":274,"searchDepth":302,"depth":302,"links":1015},[1016],{"id":84,"depth":302,"text":85,"children":1017},[1018,1019,1020,1021,1022,1023,1024,1025],{"id":133,"depth":458,"text":134},{"id":258,"depth":458,"text":259},{"id":340,"depth":458,"text":341},{"id":400,"depth":458,"text":401},{"id":491,"depth":458,"text":492},{"id":629,"depth":458,"text":630},{"id":696,"depth":458,"text":697},{"id":783,"depth":458,"text":784},[1027],"technical",null,"2021-10-19","ES8 (ECMAScript 2017) ile JavaScript'e gelen yenilikler: async\u002Fawait, padStart, padEnd, Object.entries, Object.values ve trailing commas.",false,"md","\u002Fimages\u002Fhero\u002Fes8.avif",{},"\u002Ftr\u002Fes8-nedir-ecmascript-2017-nedir",{"title":6,"description":1030},"es8-nedir-ecmascript-2017-nedir","tr\u002Fes8-nedir-ecmascript-2017-nedir",[273],"2022-05-11","ULi1qQDXeACGDq0VjRUxJUe1dUWsTwMUAfnKa5RgKqw",{"prev":1043,"next":1046,"others":1049,"lucky":1169,"readingTime":458},{"path":1044,"title":1045},"\u002Ftr\u002Fes7-nedir-ecmascript-2016-nedir","ES7 Nedir? ECMAScript 2016 Nedir?",{"path":1047,"title":1048},"\u002Ftr\u002Fes9-nedir-ecmascript-2018-nedir","ES9 Nedir? ECMAScript 2018 Nedir?",[1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1145,1148,1151,1154,1157,1160,1163,1166],{"path":1051,"title":1052},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"path":1054,"title":1055},"\u002Ftr\u002Fubuntu-guncellemesi-sonrasi-cyberpanele-ulasilamama-sorunlarini-giderme","Ubuntu Güncellemesi Sonrası CyberPanel'e Ulaşılamama Sorunlarını Giderme",{"path":1057,"title":1058},"\u002Ftr\u002Fgarbage-collection-ve-golang","Garbage Collection ve Go (Golang)",{"path":1060,"title":1061},"\u002Ftr\u002Fvisitor-tasarim-deseni-nedir","Visitor Tasarım Deseni Nedir?",{"path":1063,"title":1064},"\u002Ftr\u002Fgo-ve-degiskenler","Go ve Değişkenler",{"path":1066,"title":1067},"\u002Ftr\u002Fgo-veri-tipleri-map","Go Veri Tipleri - Map",{"path":1069,"title":1070},"\u002Ftr\u002Fwebpack-nedir","Webpack Nedir? Modern JavaScript Paketleyici Ekosistemi",{"path":1072,"title":1073},"\u002Ftr\u002Fyeni-tema-honeywind","Yeni WordPress Temam Honeywind: Tailwind CSS ve Minimalizm",{"path":1075,"title":1076},"\u002Ftr\u002Fes6-nedir-ecmascript-2015-nedir","ES6 Nedir? ECMAScript 2015 Nedir?",{"path":1078,"title":1079},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",{"path":1081,"title":1082},"\u002Ftr\u002Frabbitmq-nedir","RabbitMQ Nedir?",{"path":1084,"title":1085},"\u002Ftr\u002Fsingleton-tasarim-deseni-nedir","Singleton Tasarım Deseni Nedir?",{"path":1087,"title":1088},"\u002Ftr\u002Ftricolor-garbage-collection-algoritmasi-nedir","Tricolor Garbage Collection Algoritması Nedir?",{"path":1090,"title":1091},"\u002Ftr\u002Fdocker-nedir","Docker Nedir?",{"path":1093,"title":1094},"\u002Ftr\u002Fubuntu-24-04-uzerinde-cyberpanel-kurulumu","Ubuntu 24.04 LTS ve 22.04 LTS Üzerinde CyberPanel Kurulumu",{"path":1096,"title":1097},"\u002Ftr\u002Fjavascriptde-moduller","JavaScript'te Modüller",{"path":1099,"title":1100},"\u002Ftr\u002Fphp-8-0-yenilikler","Merhaba PHP 8: Modern PHP 8.x Çağı",{"path":1102,"title":1103},"\u002Ftr\u002Fdocker-ile-rabbitmq-kurulumu","Docker ile RabbitMQ Kurulumu",{"path":1105,"title":1106},"\u002Ftr\u002Fflyweight-tasarim-deseni-nedir","Flyweight Tasarım Deseni Nedir?",{"path":1108,"title":1109},"\u002Ftr\u002Fgo-programlama-dilinin-ozellikleri","Go Programlama Dilinin Özellikleri",{"path":1111,"title":1112},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":1114,"title":1115},"\u002Ftr\u002Fmerhabadunya","Merhaba Dünya",{"path":1117,"title":1118},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":1120,"title":1121},"\u002Ftr\u002Ffull-stack-proje-gelistiriyoruz","Full Stack Proje Geliştiriyoruz",{"path":1123,"title":1124},"\u002Ftr\u002Fcommand-tasarim-deseni-nedir","Command Tasarım Deseni Nedir?",{"path":1126,"title":1127},"\u002Ftr\u002Fes15-nedir-ecmascript-2024-nedir","ES15 nedir? ECMAScript 2024 nedir?",{"path":1129,"title":1130},"\u002Ftr\u002Fgo-ile-websockets-websocket-upgrader-nedir","Go ile WebSockets: Upgrader Nedir?",{"path":1132,"title":1133},"\u002Ftr\u002Fubuntu-20-04-uzerinde-cyberpanel-kurulumu","Ubuntu 20.04 üzerinde CyberPanel kurulumu",{"path":1135,"title":1136},"\u002Ftr\u002Ffacade-tasarim-deseni-nedir","Facade Tasarım Deseni Nedir?",{"path":1138,"title":1139},"\u002Ftr\u002Fbuilder-tasarim-deseni-nedir","Builder Tasarım Deseni Nedir?",{"path":1141,"title":1142},"\u002Ftr\u002Frestful-api-bilesenleri","RESTful API Bileşenleri",{"path":480,"title":1144},"ES10 Nedir? ECMAScript 2019 Nedir?",{"path":1146,"title":1147},"\u002Ftr\u002Ftemplate-method-tasarim-deseni-nedir","Template Method Tasarım Deseni Nedir?",{"path":1149,"title":1150},"\u002Ftr\u002Fdigital-oceanda-vps-kurulumu","DigitalOcean'da VPS (Droplet) Kurulumu: Adım Adım Rehber",{"path":1152,"title":1153},"\u002Ftr\u002Fvue-3-hakkinda-bilmeniz-gerekenler-yenilikler","Vue 3 Hakkında Bilmeniz Gerekenler ve Yenilikler",{"path":1155,"title":1156},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":1158,"title":1159},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":1161,"title":1162},"\u002Ftr\u002Fgo-veri-tipleri-struct","Go Veri Tipleri: Struct",{"path":1164,"title":1165},"\u002Ftr\u002Fmutable-ve-immutable-kavrami","Mutable ve Immutable Kavramları Nedir?",{"path":1167,"title":1168},"\u002Ftr\u002Frestapi-ve-hateoas-kavrami","RestApi ve HATEOAS Kavramı",{"path":1096,"title":1097},[1171,1175,1177,1178],{"path":1172,"title":1173,"date":1174},"\u002Ftr\u002Fvite-nedir","Vite Nedir? Modern Web Geliştirme ve Paketleme Aracı","2026-06-21",{"path":1155,"title":1156,"date":1176},"2026-06-20",{"path":1158,"title":1159,"date":1176},{"path":1126,"title":1127,"date":1176},[1180,1181,1183],{"path":1093,"title":1094,"date":1176},{"path":1051,"title":1052,"date":1182},"2023-01-17",{"path":1138,"title":1139,"date":1184},"2021-08-03",1782142001784]