[{"data":1,"prerenderedAt":1284},["ShallowReactive",2],{"post-\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir":3},{"page":4,"translation":1126,"nav":1140,"related":1268,"random":1276},{"id":5,"title":6,"body":7,"categories":1124,"category":1126,"date":1127,"description":1128,"draft":1129,"extension":1130,"image":1131,"kind":1126,"lang":114,"meta":1132,"navigation":368,"path":1133,"readingTime":379,"seo":1134,"slug":1135,"stem":1136,"tags":1137,"translationKey":1135,"type":1125,"updated":1138,"__hash__":1139},"postsTr\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir.md","ES10 Nedir? ECMAScript 2019 Nedir?",{"type":8,"value":9,"toc":1107},"minimark",[10,88,99,102,107,202,204,209,212,247,263,265,269,275,406,410,419,516,520,530,635,639,659,714,718,728,732,739,823,827,834,889,891,895,902,905,923,967,970,973,1069,1072,1090,1095,1103],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,40,71],"ul",{},[25,26,27,30,31,35,36,39],"li",{},[18,28,29],{},"ES10 (ES2019) Nedir?:"," Haziran 2019'da yayınlanan, JavaScript'e dizi düzleştirme (",[32,33,34],"code",{},"flat","), nesne dönüştürme (",[32,37,38],{},"Object.fromEntries",") ve esnek hata yakalama gibi pratik metotlar kazandıran 10. ECMAScript sürümüdür.",[25,41,42,45,46,49,50,53,54,53,57,49,60,53,63,66,67,70],{},[18,43,44],{},"Kritik Yenilikler:"," ",[32,47,48],{},"Array.prototype.flat()"," \u002F ",[32,51,52],{},"flatMap()",", ",[32,55,56],{},"Object.fromEntries()",[32,58,59],{},"trimStart()",[32,61,62],{},"trimEnd()",[32,64,65],{},"Symbol.prototype.description"," ve parametresiz ",[32,68,69],{},"catch"," bloğu.",[25,72,73,76,77,53,80,83,84,87],{},[18,74,75],{},"Not:"," Makalede, ES10 özelliklerinin yanı sıra, o dönem taslak aşamasında olup bir sonraki yıl ES11 (ES2020) ile resmiyet kazanan ",[18,78,79],{},"BigInt",[18,81,82],{},"Dynamic Import"," ve ",[18,85,86],{},"globalThis"," yeniliklerine de yer verilmiştir.",[14,89,90],{},[18,91,92,93,98],{},"ES10 (ECMAScript 2019), Haziran 2019'da yayınlanan 10. ",[94,95,97],"a",{"href":96},"\u002Ftr\u002Fecmascript-nedir-ecmascript-ne-degildir-bilinmesi-gerekenler","ECMAScript"," sürümüdür.",[100,101],"hr",{},[103,104,106],"h3",{"id":105},"es10-özellikleri-ve-pratik-kullanımları","ES10 Özellikleri ve Pratik Kullanımları",[108,109,110,127],"table",{},[111,112,113],"thead",{},[114,115,116,121,124],"tr",{},[117,118,120],"th",{"align":119},"left","Özellik",[117,122,123],{"align":119},"ES10 Öncesi Workaround",[117,125,126],{"align":119},"ES10 Modern Kullanım",[128,129,130,146,164,184],"tbody",{},[114,131,132,138,141],{},[133,134,135],"td",{"align":119},[18,136,137],{},"Dizi Düzleştirme",[133,139,140],{"align":119},"Özyinelemeli (recursive) fonksiyon yazmak",[133,142,143],{"align":119},[32,144,145],{},"arr.flat(depth)",[114,147,148,153,159],{},[133,149,150],{"align":119},[18,151,152],{},"Array'i Object'e Çevirme",[133,154,155,158],{"align":119},[32,156,157],{},"reduce"," veya döngü ile manuel eşleme",[133,160,161],{"align":119},[32,162,163],{},"Object.fromEntries(entries)",[114,165,166,171,177],{},[133,167,168],{"align":119},[18,169,170],{},"Boşluk Temizleme",[133,172,173,174],{"align":119},"Regex kullanmak veya ",[32,175,176],{},"trim()",[133,178,179,49,182],{"align":119},[32,180,181],{},"str.trimStart()",[32,183,62],{},[114,185,186,191,197],{},[133,187,188],{"align":119},[18,189,190],{},"Catch Parametresi",[133,192,193,196],{"align":119},[32,194,195],{},"catch (error)"," (Kullanılmasa bile zorunlu)",[133,198,199,201],{"align":119},[32,200,69],{}," (Parametresiz \u002F Optional binding)",[100,203],{},[205,206,208],"h2",{"id":207},"es10-ile-yeni-neler-geldi","ES10 ile Yeni Neler Geldi?",[14,210,211],{},"ES10 ile birlikte JavaScript'e aşağıdaki yenilikler geldi:",[22,213,214,218,223,227,234,240,243],{},[25,215,216],{},[32,217,48],{},[25,219,220],{},[32,221,222],{},"Array.prototype.flatMap()",[25,224,225],{},[32,226,56],{},[25,228,229,83,232],{},[32,230,231],{},"String.prototype.trimStart()",[32,233,62],{},[25,235,236,239],{},[32,237,238],{},"Function.prototype.toString()"," güncellemesi",[25,241,242],{},"İsteğe bağlı hata yakalama (Optional catch binding)",[25,244,245],{},[32,246,65],{},[11,248,249],{},[14,250,251,252,255,256,53,258,83,260,262],{},"⚠️ ",[18,253,254],{},"Tarihsel Not:"," Bu yazıda ayrıca, o dönem taslak aşamasında (Stage 4) olan ve bir sonraki yıl ES11 (ES2020) ile resmi standart haline gelen ",[18,257,79],{},[18,259,82],{},[18,261,86],{}," özelliklerine de değinilmiştir.",[100,264],{},[103,266,268],{"id":267},"_1-arrayprototypeflat","1. Array.prototype.flat()",[14,270,271,274],{},[32,272,273],{},"flat()"," yöntemi, çok boyutlu veya iç içe geçmiş dizileri belirtilen derinliğe kadar düzleştirme (düz bir dizi haline getirme) işlemini gerçekleştirir. ES10 öncesinde bu işlem için özyinelemeli (recursive) fonksiyonlar yazmamız gerekirken, artık tek satırda yapabiliyoruz:",[276,277,282],"pre",{"className":278,"code":279,"language":280,"meta":281,"style":281},"language-javascript shiki shiki-themes github-light github-dark","const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [1, 2, 3]]]];\n\n\u002F\u002F 3 seviye derinliğe kadar düzleştir\nconsole.log(arr.flat(3));\n\u002F\u002F Çıktı: [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3]\n","javascript","",[32,283,284,363,370,377,400],{"__ignoreMap":281},[285,286,289,293,297,300,304,307,309,312,314,317,320,323,325,328,330,333,335,338,340,343,345,348,350,352,354,356,358,360],"span",{"class":287,"line":288},"line",1,[285,290,292],{"class":291},"szBVR","const",[285,294,296],{"class":295},"sj4cs"," arr",[285,298,299],{"class":291}," =",[285,301,303],{"class":302},"sVt8B"," [",[285,305,306],{"class":295},"1",[285,308,53],{"class":302},[285,310,311],{"class":295},"2",[285,313,53],{"class":302},[285,315,316],{"class":295},"3",[285,318,319],{"class":302},", [",[285,321,322],{"class":295},"4",[285,324,53],{"class":302},[285,326,327],{"class":295},"5",[285,329,53],{"class":302},[285,331,332],{"class":295},"6",[285,334,319],{"class":302},[285,336,337],{"class":295},"7",[285,339,53],{"class":302},[285,341,342],{"class":295},"8",[285,344,53],{"class":302},[285,346,347],{"class":295},"9",[285,349,319],{"class":302},[285,351,306],{"class":295},[285,353,53],{"class":302},[285,355,311],{"class":295},[285,357,53],{"class":302},[285,359,316],{"class":295},[285,361,362],{"class":302},"]]]];\n",[285,364,366],{"class":287,"line":365},2,[285,367,369],{"emptyLinePlaceholder":368},true,"\n",[285,371,373],{"class":287,"line":372},3,[285,374,376],{"class":375},"sJ8bj","\u002F\u002F 3 seviye derinliğe kadar düzleştir\n",[285,378,380,383,387,390,392,395,397],{"class":287,"line":379},4,[285,381,382],{"class":302},"console.",[285,384,386],{"class":385},"sScJk","log",[285,388,389],{"class":302},"(arr.",[285,391,34],{"class":385},[285,393,394],{"class":302},"(",[285,396,316],{"class":295},[285,398,399],{"class":302},"));\n",[285,401,403],{"class":287,"line":402},5,[285,404,405],{"class":375},"\u002F\u002F Çıktı: [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3]\n",[103,407,409],{"id":408},"_2-arrayprototypeflatmap","2. Array.prototype.flatMap()",[14,411,412,414,415,418],{},[32,413,52],{},", bir dizinin elemanlarını standart ",[32,416,417],{},"map()"," fonksiyonuna benzer şekilde değiştirdikten sonra elde edilen sonuçları düz bir dizi halinde birleştirmek için kullanılır. Parametre olarak bir callback fonksiyonu alır. Sadece derinliği 1 olan diziler üzerinde etkilidir:",[276,420,422],{"className":278,"code":421,"language":280,"meta":281,"style":281},"const arr = [1, 2, 3, 4];\nconsole.log(arr.map(x => [x * 3]));    \u002F\u002F [[3], [6], [9], [12]]\nconsole.log(arr.flatMap(x => [x * 2])); \u002F\u002F [2, 4, 6, 8]\n",[32,423,424,451,486],{"__ignoreMap":281},[285,425,426,428,430,432,434,436,438,440,442,444,446,448],{"class":287,"line":288},[285,427,292],{"class":291},[285,429,296],{"class":295},[285,431,299],{"class":291},[285,433,303],{"class":302},[285,435,306],{"class":295},[285,437,53],{"class":302},[285,439,311],{"class":295},[285,441,53],{"class":302},[285,443,316],{"class":295},[285,445,53],{"class":302},[285,447,322],{"class":295},[285,449,450],{"class":302},"];\n",[285,452,453,455,457,459,462,464,468,471,474,477,480,483],{"class":287,"line":365},[285,454,382],{"class":302},[285,456,386],{"class":385},[285,458,389],{"class":302},[285,460,461],{"class":385},"map",[285,463,394],{"class":302},[285,465,467],{"class":466},"s4XuR","x",[285,469,470],{"class":291}," =>",[285,472,473],{"class":302}," [x ",[285,475,476],{"class":291},"*",[285,478,479],{"class":295}," 3",[285,481,482],{"class":302},"]));    ",[285,484,485],{"class":375},"\u002F\u002F [[3], [6], [9], [12]]\n",[285,487,488,490,492,494,497,499,501,503,505,507,510,513],{"class":287,"line":372},[285,489,382],{"class":302},[285,491,386],{"class":385},[285,493,389],{"class":302},[285,495,496],{"class":385},"flatMap",[285,498,394],{"class":302},[285,500,467],{"class":466},[285,502,470],{"class":291},[285,504,473],{"class":302},[285,506,476],{"class":291},[285,508,509],{"class":295}," 2",[285,511,512],{"class":302},"])); ",[285,514,515],{"class":375},"\u002F\u002F [2, 4, 6, 8]\n",[103,517,519],{"id":518},"_3-objectfromentries","3. Object.fromEntries()",[14,521,522,523,526,527,529],{},"ES8'de duyurulan ",[32,524,525],{},"Object.entries()",", nesneleri anahtar-değer çiftlerinden oluşan dizilere dönüştürüyordu. ES10 ile gelen ",[32,528,56],{}," ise bunun tam tersini yaparak, iki boyutlu anahtar-değer dizilerini tekrar bir nesneye (object) dönüştürür:",[276,531,533],{"className":278,"code":532,"language":280,"meta":281,"style":281},"\u002F\u002F Nesneyi diziye çevirme (ES8)\nconst student = { id: 1, name: \"john\" };\nconst studentArray = Object.entries(student); \nconsole.log(studentArray); \u002F\u002F [ [ 'id', 1 ], [ 'name', 'john' ] ]\n\n\u002F\u002F Diziyi tekrar nesneye çevirme (ES10)\nconst newStudent = Object.fromEntries(studentArray); \nconsole.log(newStudent); \u002F\u002F { id: 1, name: 'john' }\n",[32,534,535,540,564,582,594,598,604,622],{"__ignoreMap":281},[285,536,537],{"class":287,"line":288},[285,538,539],{"class":375},"\u002F\u002F Nesneyi diziye çevirme (ES8)\n",[285,541,542,544,547,549,552,554,557,561],{"class":287,"line":365},[285,543,292],{"class":291},[285,545,546],{"class":295}," student",[285,548,299],{"class":291},[285,550,551],{"class":302}," { id: ",[285,553,306],{"class":295},[285,555,556],{"class":302},", name: ",[285,558,560],{"class":559},"sZZnC","\"john\"",[285,562,563],{"class":302}," };\n",[285,565,566,568,571,573,576,579],{"class":287,"line":372},[285,567,292],{"class":291},[285,569,570],{"class":295}," studentArray",[285,572,299],{"class":291},[285,574,575],{"class":302}," Object.",[285,577,578],{"class":385},"entries",[285,580,581],{"class":302},"(student); \n",[285,583,584,586,588,591],{"class":287,"line":379},[285,585,382],{"class":302},[285,587,386],{"class":385},[285,589,590],{"class":302},"(studentArray); ",[285,592,593],{"class":375},"\u002F\u002F [ [ 'id', 1 ], [ 'name', 'john' ] ]\n",[285,595,596],{"class":287,"line":402},[285,597,369],{"emptyLinePlaceholder":368},[285,599,601],{"class":287,"line":600},6,[285,602,603],{"class":375},"\u002F\u002F Diziyi tekrar nesneye çevirme (ES10)\n",[285,605,607,609,612,614,616,619],{"class":287,"line":606},7,[285,608,292],{"class":291},[285,610,611],{"class":295}," newStudent",[285,613,299],{"class":291},[285,615,575],{"class":302},[285,617,618],{"class":385},"fromEntries",[285,620,621],{"class":302},"(studentArray); \n",[285,623,625,627,629,632],{"class":287,"line":624},8,[285,626,382],{"class":302},[285,628,386],{"class":385},[285,630,631],{"class":302},"(newStudent); ",[285,633,634],{"class":375},"\u002F\u002F { id: 1, name: 'john' }\n",[103,636,638],{"id":637},"_4-stringprototypetrimstart-ve-trimend","4. String.prototype.trimStart() ve trimEnd()",[22,640,641,650],{},[25,642,643,645,646,649],{},[32,644,59],{},": Bir metnin başındaki boşluk (whitespace) karakterlerini kaldırır. Diğer adı ",[32,647,648],{},"trimLeft()","'tir.",[25,651,652,654,655,658],{},[32,653,62],{},": Bir metnin sonundaki boşluk karakterlerini kaldırır. Diğer adı ",[32,656,657],{},"trimRight()","'tır.",[276,660,662],{"className":278,"code":661,"language":280,"meta":281,"style":281},"const message = '    Merhaba Dünya!   ';\nconsole.log(message.trimStart()); \u002F\u002F \"Merhaba Dünya!   \"\nconsole.log(message.trimEnd());   \u002F\u002F \"    Merhaba Dünya!\"\n",[32,663,664,679,697],{"__ignoreMap":281},[285,665,666,668,671,673,676],{"class":287,"line":288},[285,667,292],{"class":291},[285,669,670],{"class":295}," message",[285,672,299],{"class":291},[285,674,675],{"class":559}," '    Merhaba Dünya!   '",[285,677,678],{"class":302},";\n",[285,680,681,683,685,688,691,694],{"class":287,"line":365},[285,682,382],{"class":302},[285,684,386],{"class":385},[285,686,687],{"class":302},"(message.",[285,689,690],{"class":385},"trimStart",[285,692,693],{"class":302},"()); ",[285,695,696],{"class":375},"\u002F\u002F \"Merhaba Dünya!   \"\n",[285,698,699,701,703,705,708,711],{"class":287,"line":372},[285,700,382],{"class":302},[285,702,386],{"class":385},[285,704,687],{"class":302},[285,706,707],{"class":385},"trimEnd",[285,709,710],{"class":302},"());   ",[285,712,713],{"class":375},"\u002F\u002F \"    Merhaba Dünya!\"\n",[103,715,717],{"id":716},"_5-functionprototypetostring-güncellemesi","5. Function.prototype.toString() Güncellemesi",[14,719,720,721,724,725,727],{},"ES10 öncesinde fonksiyonların ",[32,722,723],{},"toString()"," yöntemi, kaynak kodu boşluklar ve yorum satırları olmadan döndürebiliyordu. ES10 ile güncellenen ",[32,726,723],{},", yorum satırlarını, boşlukları ve yeni satır karakterlerini koruyarak fonksiyonun birebir yazıldığı kaynak kodu döndürür.",[103,729,731],{"id":730},"_6-i̇steğe-bağlı-hata-yakalama-optional-catch-binding","6. İsteğe Bağlı Hata Yakalama (Optional Catch Binding)",[14,733,734,735,738],{},"ES10 öncesinde ",[32,736,737],{},"try\u002Fcatch"," bloklarında, yakalanan hata parametresini (error) kullanmasak dahi catch parantezinde belirtmek zorundaydık. Artık bu parametreyi tanımlamak isteğe bağlıdır:",[276,740,742],{"className":278,"code":741,"language":280,"meta":281,"style":281},"\u002F\u002F ES10 Öncesi\ntry {\n  \u002F\u002F Kod bloğu\n} catch (error) {\n  \u002F\u002F error parametresi kullanılmasa bile yazılmalıydı\n}\n\n\u002F\u002F ES10 ve Sonrası\ntry {\n  \u002F\u002F Kod bloğu\n} catch {\n  \u002F\u002F Hata parametresine ihtiyaç duyulmayan durumlar\n}\n",[32,743,744,749,757,762,772,777,782,786,791,798,803,812,818],{"__ignoreMap":281},[285,745,746],{"class":287,"line":288},[285,747,748],{"class":375},"\u002F\u002F ES10 Öncesi\n",[285,750,751,754],{"class":287,"line":365},[285,752,753],{"class":291},"try",[285,755,756],{"class":302}," {\n",[285,758,759],{"class":287,"line":372},[285,760,761],{"class":375},"  \u002F\u002F Kod bloğu\n",[285,763,764,767,769],{"class":287,"line":379},[285,765,766],{"class":302},"} ",[285,768,69],{"class":291},[285,770,771],{"class":302}," (error) {\n",[285,773,774],{"class":287,"line":402},[285,775,776],{"class":375},"  \u002F\u002F error parametresi kullanılmasa bile yazılmalıydı\n",[285,778,779],{"class":287,"line":600},[285,780,781],{"class":302},"}\n",[285,783,784],{"class":287,"line":606},[285,785,369],{"emptyLinePlaceholder":368},[285,787,788],{"class":287,"line":624},[285,789,790],{"class":375},"\u002F\u002F ES10 ve Sonrası\n",[285,792,794,796],{"class":287,"line":793},9,[285,795,753],{"class":291},[285,797,756],{"class":302},[285,799,801],{"class":287,"line":800},10,[285,802,761],{"class":375},[285,804,806,808,810],{"class":287,"line":805},11,[285,807,766],{"class":302},[285,809,69],{"class":291},[285,811,756],{"class":302},[285,813,815],{"class":287,"line":814},12,[285,816,817],{"class":375},"  \u002F\u002F Hata parametresine ihtiyaç duyulmayan durumlar\n",[285,819,821],{"class":287,"line":820},13,[285,822,781],{"class":302},[103,824,826],{"id":825},"_7-symbolprototypedescription","7. Symbol.prototype.description",[14,828,829,830,833],{},"ES10 ile birlikte sembollere (Symbol) eklenen salt okunur ",[32,831,832],{},"description"," özelliği sayesinde sembol oluşturulurken verilen açıklamayı doğrudan elde edebiliyoruz:",[276,835,837],{"className":278,"code":836,"language":280,"meta":281,"style":281},"const symbol = Symbol(\"Bu bir semboldür\");\nconsole.log(symbol.toString());    \u002F\u002F Symbol(Bu bir semboldür)\nconsole.log(symbol.description);   \u002F\u002F Bu bir semboldür\n",[32,838,839,859,877],{"__ignoreMap":281},[285,840,841,843,846,848,851,853,856],{"class":287,"line":288},[285,842,292],{"class":291},[285,844,845],{"class":295}," symbol",[285,847,299],{"class":291},[285,849,850],{"class":385}," Symbol",[285,852,394],{"class":302},[285,854,855],{"class":559},"\"Bu bir semboldür\"",[285,857,858],{"class":302},");\n",[285,860,861,863,865,868,871,874],{"class":287,"line":365},[285,862,382],{"class":302},[285,864,386],{"class":385},[285,866,867],{"class":302},"(symbol.",[285,869,870],{"class":385},"toString",[285,872,873],{"class":302},"());    ",[285,875,876],{"class":375},"\u002F\u002F Symbol(Bu bir semboldür)\n",[285,878,879,881,883,886],{"class":287,"line":372},[285,880,382],{"class":302},[285,882,386],{"class":385},[285,884,885],{"class":302},"(symbol.description);   ",[285,887,888],{"class":375},"\u002F\u002F Bu bir semboldür\n",[100,890],{},[205,892,894],{"id":893},"sonraki-sürümle-es11-standartlaşan-özellikler","Sonraki Sürümle (ES11) Standartlaşan Özellikler",[14,896,897,898,901],{},"Aşağıdaki özellikler ES10 döneminde taslak aşamasındaydı ve resmi olarak ",[18,899,900],{},"ES11 (ES2020)"," sürümü ile standartlaşmıştır:",[103,903,79],{"id":904},"bigint",[14,906,907,908,911,912,915,916,919,920,922],{},"JavaScript'te güvenle kullanılabilecek en büyük tam sayı ",[32,909,910],{},"Number.MAX_SAFE_INTEGER"," yani ",[32,913,914],{},"9007199254740991"," (",[32,917,918],{},"2^53 - 1",") değeridir. Bu değerin üzerine normal yollarla çıkıldığında matematiksel hassasiyet kaybolur. ",[32,921,79],{}," ise sınırsız büyüklükte tam sayılarla çalışabilmemizi sağlar:",[276,924,926],{"className":278,"code":925,"language":280,"meta":281,"style":281},"let bigInt = BigInt(Number.MAX_SAFE_INTEGER);\nbigInt++;\nconsole.log(bigInt); \u002F\u002F 9007199254740992n (Sondaki 'n' harfi BigInt olduğunu belirtir)\n",[32,927,928,945,955],{"__ignoreMap":281},[285,929,930,933,936,939,942],{"class":287,"line":288},[285,931,932],{"class":291},"let",[285,934,935],{"class":302}," bigInt ",[285,937,938],{"class":291},"=",[285,940,941],{"class":385}," BigInt",[285,943,944],{"class":302},"(Number.MAX_SAFE_INTEGER);\n",[285,946,947,950,953],{"class":287,"line":365},[285,948,949],{"class":302},"bigInt",[285,951,952],{"class":291},"++",[285,954,678],{"class":302},[285,956,957,959,961,964],{"class":287,"line":372},[285,958,382],{"class":302},[285,960,386],{"class":385},[285,962,963],{"class":302},"(bigInt); ",[285,965,966],{"class":375},"\u002F\u002F 9007199254740992n (Sondaki 'n' harfi BigInt olduğunu belirtir)\n",[103,968,82],{"id":969},"dynamic-import",[14,971,972],{},"Modüllerin çalışma anında, koşula bağlı olarak asenkron bir şekilde dinamik olarak içeri aktarılmasını (import) sağlar:",[276,974,976],{"className":278,"code":975,"language":280,"meta":281,"style":281},"let myModule;\nconst selectedModule = 1;\n\nif (selectedModule === 1) {\n  myModule = await import('.\u002Fmodule1.js');\n} else {\n  myModule = await import('.\u002Fmodule2.js');\n}\n",[32,977,978,985,999,1003,1019,1039,1048,1065],{"__ignoreMap":281},[285,979,980,982],{"class":287,"line":288},[285,981,932],{"class":291},[285,983,984],{"class":302}," myModule;\n",[285,986,987,989,992,994,997],{"class":287,"line":365},[285,988,292],{"class":291},[285,990,991],{"class":295}," selectedModule",[285,993,299],{"class":291},[285,995,996],{"class":295}," 1",[285,998,678],{"class":302},[285,1000,1001],{"class":287,"line":372},[285,1002,369],{"emptyLinePlaceholder":368},[285,1004,1005,1008,1011,1014,1016],{"class":287,"line":379},[285,1006,1007],{"class":291},"if",[285,1009,1010],{"class":302}," (selectedModule ",[285,1012,1013],{"class":291},"===",[285,1015,996],{"class":295},[285,1017,1018],{"class":302},") {\n",[285,1020,1021,1024,1026,1029,1032,1034,1037],{"class":287,"line":402},[285,1022,1023],{"class":302},"  myModule ",[285,1025,938],{"class":291},[285,1027,1028],{"class":291}," await",[285,1030,1031],{"class":291}," import",[285,1033,394],{"class":302},[285,1035,1036],{"class":559},"'.\u002Fmodule1.js'",[285,1038,858],{"class":302},[285,1040,1041,1043,1046],{"class":287,"line":600},[285,1042,766],{"class":302},[285,1044,1045],{"class":291},"else",[285,1047,756],{"class":302},[285,1049,1050,1052,1054,1056,1058,1060,1063],{"class":287,"line":606},[285,1051,1023],{"class":302},[285,1053,938],{"class":291},[285,1055,1028],{"class":291},[285,1057,1031],{"class":291},[285,1059,394],{"class":302},[285,1061,1062],{"class":559},"'.\u002Fmodule2.js'",[285,1064,858],{"class":302},[285,1066,1067],{"class":287,"line":624},[285,1068,781],{"class":302},[103,1070,86],{"id":1071},"globalthis",[14,1073,1074,1075,1078,1079,1082,1083,1086,1087,1089],{},"Tarayıcı ortamında global nesne ",[32,1076,1077],{},"window"," veya ",[32,1080,1081],{},"self"," iken Node.js ortamında ",[32,1084,1085],{},"global","'dir. ",[32,1088,86],{},", kodun çalıştığı platformdan bağımsız olarak her zaman doğru global nesneye erişmemizi sağlayan standartlaştırılmış bir nesnedir.",[1091,1092,1094],"h5",{"id":1093},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,1096,1097,1100],{},[25,1098,1099],{},"21.06.2026: Dizi tanımlarındaki eksik virgül ve tanımsız değişken hataları içeren kod örnekleri düzeltildi. ES10 ve ES11 (BigInt, Dynamic Import, globalThis) ayrımı netleştirilerek teknik hatalar giderildi. Türkçe yazım hataları düzeltildi. Pratik karşılaştırma tablosu ve özet bloğu eklendi.",[25,1101,1102],{},"11.05.2022: Yazı özeti düzenlendi.",[1104,1105,1106],"style",{},"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}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":281,"searchDepth":365,"depth":365,"links":1108},[1109,1110,1119],{"id":105,"depth":372,"text":106},{"id":207,"depth":365,"text":208,"children":1111},[1112,1113,1114,1115,1116,1117,1118],{"id":267,"depth":372,"text":268},{"id":408,"depth":372,"text":409},{"id":518,"depth":372,"text":519},{"id":637,"depth":372,"text":638},{"id":716,"depth":372,"text":717},{"id":730,"depth":372,"text":731},{"id":825,"depth":372,"text":826},{"id":893,"depth":365,"text":894,"children":1120},[1121,1122,1123],{"id":904,"depth":372,"text":79},{"id":969,"depth":372,"text":82},{"id":1071,"depth":372,"text":86},[1125],"technical",null,"2021-10-19","ES10 (ECMAScript 2019) özellikleri nelerdir? Array.prototype.flat(), Object.fromEntries(), optional catch ve globalThis kullanımı.",false,"md","\u002Fimages\u002Fhero\u002Fes10.avif",{},"\u002Ftr\u002Fes10-nedir-ecmascript-2019-nedir",{"title":6,"description":1128},"es10-nedir-ecmascript-2019-nedir","tr\u002Fes10-nedir-ecmascript-2019-nedir",[280],"2026-06-21","sQv35ZQmb_0DCivGNd2Bb1698h7e21-w4NWgyo9uXYk",{"prev":1141,"next":1144,"others":1147,"lucky":1265,"readingTime":379},{"path":1142,"title":1143},"\u002Ftr\u002Fes6-nedir-ecmascript-2015-nedir","ES6 Nedir? ECMAScript 2015 Nedir?",{"path":1145,"title":1146},"\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir","ES11 Nedir? ECMAScript 2020 Nedir?",[1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262],{"path":1149,"title":1150},"\u002Ftr\u002Fdocker-ile-redis-kurulumu","Docker ile Redis Kurulumu",{"path":1152,"title":1153},"\u002Ftr\u002Fyeni-tema-honeywind","Yeni WordPress Temam Honeywind: Tailwind CSS ve Minimalizm",{"path":1155,"title":1156},"\u002Ftr\u002Ftemplate-method-tasarim-deseni-nedir","Template Method Tasarım Deseni Nedir?",{"path":1158,"title":1159},"\u002Ftr\u002Fvite-nedir","Vite Nedir? Modern Web Geliştirme ve Paketleme Aracı",{"path":1161,"title":1162},"\u002Ftr\u002Fobserver-tasarim-deseni-nedir","Observer Tasarım Deseni Nedir?",{"path":1164,"title":1165},"\u002Ftr\u002Fmutable-ve-immutable-kavrami","Mutable ve Immutable Kavramları Nedir?",{"path":1167,"title":1168},"\u002Ftr\u002Fgarbage-collection-ve-golang","Garbage Collection ve Go (Golang)",{"path":1170,"title":1171},"\u002Ftr\u002Fiterator-tasarim-deseni-nedir","Iterator Tasarım Deseni Nedir?",{"path":1173,"title":1174},"\u002Ftr\u002Fgo-programlama-dilinin-ozellikleri","Go Programlama Dilinin Özellikleri",{"path":1176,"title":1177},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":1142,"title":1143},{"path":1180,"title":1181},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-abstract-factory-nedir","Abstract Factory Tasarım Deseni Nedir?",{"path":1183,"title":1184},"\u002Ftr\u002Fmerhabadunya","Merhaba Dünya",{"path":1186,"title":1187},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?",{"path":1189,"title":1190},"\u002Ftr\u002Frest-api-kimlik-dogrulama-nasil-yapilir","REST API Kimlik Doğrulama Nasıl Yapılır?",{"path":1192,"title":1193},"\u002Ftr\u002Flinuxda-golang-kurulumu","Linux'ta Golang Kurulumu",{"path":1195,"title":1196},"\u002Ftr\u002Fgo-veri-tipleri-struct","Go Veri Tipleri: Struct",{"path":1198,"title":1199},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":1201,"title":1202},"\u002Ftr\u002Fvisitor-tasarim-deseni-nedir","Visitor Tasarım Deseni Nedir?",{"path":1204,"title":1205},"\u002Ftr\u002Fphp-generator-ve-iterator-farki","PHP'de Generator ve Iterator Arasındaki Temel Farklar",{"path":96,"title":1207},"ECMAScript Nedir? Bilinmesi Gerekenler...",{"path":1209,"title":1210},"\u002Ftr\u002Fcommand-tasarim-deseni-nedir","Command Tasarım Deseni Nedir?",{"path":1212,"title":1213},"\u002Ftr\u002Fvue-3-hakkinda-bilmeniz-gerekenler-yenilikler","Vue 3 Hakkında Bilmeniz Gerekenler ve Yenilikler",{"path":1215,"title":1216},"\u002Ftr\u002Ftricolor-garbage-collection-algoritmasi-nedir","Tricolor Garbage Collection Algoritması Nedir?",{"path":1218,"title":1219},"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı",{"path":1221,"title":1222},"\u002Ftr\u002Fgo-veri-tipleri-string-integer-float-complex-boolean-ve-array","Go Veri Tipleri - String, Integer, Float, Complex, Boolean ve Array",{"path":1224,"title":1225},"\u002Ftr\u002Fself-hosted-api-gateway-nasil-kurulur-kapsamli-rehber","Self-Hosted API Gateway Nasıl Kurulur? Kapsamlı Rehber",{"path":1227,"title":1228},"\u002Ftr\u002Fdocker-ve-portainer-kurulumu","Docker ve Portainer Kurulumu",{"path":1230,"title":1231},"\u002Ftr\u002Fubuntu-guncellemesi-sonrasi-cyberpanele-ulasilamama-sorunlarini-giderme","Ubuntu Güncellemesi Sonrası CyberPanel'e Ulaşılamama Sorunlarını Giderme",{"path":1233,"title":1234},"\u002Ftr\u002Fgo-slice-veri-tipi","Go Veri Tipleri: Slice",{"path":1236,"title":1237},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",{"path":1239,"title":1240},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":1242,"title":1243},"\u002Ftr\u002Fnext-js-on-bellegi-nasil-yenilenir-on-demand-cache-regeneration","Next.js Önbelleği Nasıl Yenilenir? \"On-Demand Cache Regeneration\"",{"path":1245,"title":1246},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"path":1248,"title":1249},"\u002Ftr\u002Frest-api-uri-yapisi-nasil-olmali","REST API URI Yapısı Nasıl Olmalı?",{"path":1251,"title":1252},"\u002Ftr\u002Fdecorator-tasarim-deseni-nedir","Decorator Tasarım Deseni Nedir?",{"path":1254,"title":1255},"\u002Ftr\u002Fproxy-tasarim-deseni-nedir","Proxy Tasarım Deseni Nedir?",{"path":1257,"title":1258},"\u002Ftr\u002Frabbitmq-nedir","RabbitMQ Nedir?",{"path":1260,"title":1261},"\u002Ftr\u002Fstate-tasarim-deseni-nedir","State Tasarım Deseni Nedir?",{"path":1263,"title":1264},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?",{"path":1266,"title":1267},"\u002Ftr\u002Fdocker-ile-mongodb-kurulumu","Docker ile MongoDB Kurulumu",[1269,1270,1272,1273],{"path":1158,"title":1159,"date":1138},{"path":1198,"title":1199,"date":1271},"2026-06-20",{"path":1239,"title":1240,"date":1271},{"path":1274,"title":1275,"date":1271},"\u002Ftr\u002Fes15-nedir-ecmascript-2024-nedir","ES15 nedir? ECMAScript 2024 nedir?",[1277,1281,1282],{"path":1278,"title":1279,"date":1280},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama","2023-07-02",{"path":1145,"title":1146,"date":1127},{"path":1245,"title":1246,"date":1283},"2023-01-17",1782142001368]