武汉大学校长是什么级别| 熟视无睹什么意思| 卵巢多囊症是什么原因造成| 肌酸激酶高吃什么药| 九个月宝宝吃什么辅食| 蛋白粉是什么| 蔡英文是什么党派| pose什么意思| 咖啡加奶叫什么| 口腔苔藓用什么药| 硬不起来是什么原因| 蝙蝠属于什么类| 肝囊肿吃什么食物好| 白芷有什么作用| 戊肝是什么病| 补办医保卡需要什么资料| mon什么意思| 脸上出油多是什么原因| 羊水什么颜色| 内向男生适合什么工作| isis是什么组织| 路上遇到蛇是什么征兆| 淼念什么| 为什么心脏会隐隐作痛| 嘘寒问暖是什么意思| 补中益气丸治什么病| 闭经有什么症状| 阑尾炎是什么原因引起的| 什么烟好抽又便宜| 六月十六是什么星座| 梦到跟人吵架是什么意思| 尿素高吃什么药| 为什么运动完会恶心头晕想吐| 拉肚子吃什么食物| 夜尿多是什么原因引起的| 戒断反应什么意思| 转氨酶和转移酶有什么区别| 2001年出生属什么| 熟褐色是什么颜色| 便秘吃什么药| 胆管结石用什么药能把它除掉| 为什么一喝阿胶睡眠就好了| 淋巴结炎挂什么科| 水晶粉是什么原料做的| 鸡肉配什么菜好吃| 待我长发及腰时下一句是什么| 抗坏血酸是什么意思| 03属什么生肖| 养仓鼠需要注意什么| 过敏是什么样的图片| 什么食物含铅| 寒战是什么症状| 拖是什么意思| 男人为什么会出轨| 什么时候恢复的高考| 中央型肺ca是什么意思| 三点水的字大多与什么有关| 屁股生疮是什么原因| 尿酸过高是什么原因| 87年属什么的生肖| 9月13日是什么星座| 拔掉智齿有什么影响| 检查头部挂什么科室| 祥五行属什么| 空调室内机漏水是什么原因| 甜瓜不能和什么一起吃| 胆红素高是怎么回事有什么危害| 高潮是什么| eo是什么意思| 什么季节最短| 尿道下裂是什么意思| 二月二十五号是什么星座| 腿部抽筋是什么原因引起的| 咳嗽有黄痰吃什么药| 玄猫是什么猫| 绝经后吃什么能来月经| 打鼾是什么原因引起的| 眩晕去医院挂什么科室| 咽喉炎用什么药| 营卫不和吃什么中成药| 卡拉胶是什么| 冚家铲是什么意思| 慢性宫颈炎用什么药好| 维生素d是什么东西| 梦见办酒席是什么意思| 什么样的葡萄| 潮宏基是什么档次的| 怀孕不能吃什么| 斋醮是什么意思| 晒伤用什么药| 仓鼠喜欢吃什么| 榴莲什么季节吃最好| 闹代表什么生肖| 好学不倦什么意思| 9月17日是什么星座| 泡面吃多了有什么危害| 梦到龙预示着什么| 什么治疗咽炎效果好| ao是什么| 身份证上x代表什么| 汾酒属于什么香型| 白舌苔是什么原因| 十滴水是什么| 着凉拉肚子吃什么药| 养寇自重什么意思| 2月6日什么星座| 异性是什么意思| 什么是规培| 云想衣裳花想容是什么意思| 什么是支原体感染| s和m是什么意思| 为什么有钱人不去植发| 梦见车翻了是什么预兆| 胸膜炎吃什么药好| 前纵韧带钙化是什么意思| 韶字五行属什么| 眼睛干涩是什么原因引起的| 基数是什么意思| 啥是什么意思| 家里为什么会有蜈蚣| 久坐脚肿是什么原因| 除颤是什么意思| 鼻窦炎用什么药好| 吃什么水果补肝养肝最有效| 什么是黑色素瘤| 跑步对身体有什么好处| 什么是高嘌呤食物| 心包填塞三联征是什么| 吃什么可以快速减肥| 肺癌靶向治疗是什么意思| 宝宝不吃奶是什么原因| 什么可以驱蛇| 纨绔子弟什么意思| 子宫憩室是什么| 什么样的人着床晚| 心梗有什么症状| 退步是什么意思| 什么时候艾灸最好| 头顶不舒服是什么原因| 奕字五行属什么| 东南西北五行属什么| 命里有时终须有命里无时莫强求什么意思| 蕈是什么意思| 肚脐眼连接体内的什么器官| 血管属于什么组织| 黑眼圈重是什么原因| 鬼蝴蝶为什么不能抓| 毛尖属于什么茶| 富硒是什么意思| 阴道发炎用什么药| 第三代身份证什么时候开始办理| 养囊是什么意思| 天蝎座属于什么象星座| 眼花是什么原因引起的| 胃酸吃什么药好| hbsag是什么意思| 阳痿早泄是什么原因| 腋窝下疼痛是什么原因| 什么时候喝蜂蜜水最好| 拉条子是什么意思| 拔火罐对身体有什么好处| 迪丽热巴是什么族| 离婚的女人叫什么| 钻牛角尖是什么意思| 路上遇到蛇是什么征兆| 憋不住尿是什么原因| 中图分类号是什么| 肺纤维化是什么意思| 左侧淋巴结肿大是什么原因| 胎方位loa是什么意思| 白带什么样| 心肌炎是什么病| 5月21日什么星座| 拜你所赐什么意思| 甄嬛传什么时候上映的| 什么时候开始孕吐| 什么是体外射精| 聿五行属什么| 荷叶有什么功效和作用| 跳槽是什么意思| 帕金森吃什么药效果好| 人的本质属性是什么| 呼吸性碱中毒吃什么药| 肝功能异常是什么意思| 什么是气血不足| 诞辰是什么意思| 子宫内膜增厚有什么影响| 心慌是什么原因引起的| lemon是什么意思| 晕车的读音是什么| 傍晚是什么时候| 百香果有什么好处| 中国肤药膏有什么功效| 6什么意思| 臭鳜鱼是什么菜系| 钱是什么单位| 脚痛是什么原因| 八七年属什么的| 大生化挂什么科| 夫妻备孕检查挂什么科| 打闭经针有什么副作用| 蝙蝠属于什么类| 阁五行属什么| 小孩早上起床咳嗽是什么原因| 发小是什么意思| 阿托品是什么药| 心有戚戚焉什么意思| 胃烧灼吃什么立马缓解| 六味地黄丸吃多了有什么副作用| 头上戴冠是什么生肖| 胎儿左侧侧脑室增宽的原因是什么| 睡觉手麻木是什么原因| 什么为力| 青云志是什么意思| pola是什么牌子| ad和d3有什么区别| 什么木头有香味| 戒备心是什么意思| 什么水晶招财| 什么是血脂| 什么的东风填词语| 炖肉放什么调料| 左旋肉碱是什么| 口水分泌过多是什么原因| 阴虚火旺吃什么好| 小针刀是什么手术| 做梦梦见好多蛇是什么预兆| 姥姥的妈妈叫什么| egfr是什么| 精血亏虚吃什么中成药| 血尿挂什么科| 小孩不吃饭是什么原因| 人造革是什么材质| 乌龟浮水是什么原因| 为什么总是犯困想睡觉| 确认妊娠是什么意思啊| 熔炉是什么意思| 腔梗吃什么药| 手和脚脱皮是什么原因| 龙象征着什么| 格桑花是什么意思| 肚子胀胀的是什么原因| 11.15是什么星座| 复姓什么意思| 脑白质变性什么意思| 胃酸过多什么原因| 身上经常痒是什么原因| 狗狗拉肚子是什么原因| 失眠用什么药| 18k金是什么| pearl什么意思| 樱桃是什么季节的水果| 太息是什么意思| 漏尿是什么原因| 胆气虚吃什么中成药| 主动脉硬化吃什么药好| 奶茶三兄弟是什么| 叫床是什么| 斑秃是什么原因造成的| 胃酸过多是什么原因造成的| 温水煮青蛙什么意思| 6.8什么星座| 脚底麻是什么原因| 小腿肚酸疼是什么原因| 百度??eri?e atla

颈部减肥锻炼办法 四个方法教你拥有迷人颈部

Vikipedi, ?zgür ansiklopedi
JavaScript

JavaScript Logosu
JavaScript kaynak kodu ekran g?rüntüsü
Paradigmas??oklu paradigma: Olaya dayal? programlama, Fonksiyonel programlama, Zorunlu programlama, Nesne y?nelimli programlama
?lk ??k???4 Aral?k 1995 (29 y?l ?nce) (2025-08-04)[1]
Tasar?mc?Ba?lang??ta Netscape'ten Brendan Eich; di?erleri de ECMAScript standard?na katk?da bulunmu?tur.
Kararl? sürümECMAScript 2024[2] Bunu Vikiveri'de düzenleyin (Haziran 2024 (14 ay ?nce) (Haziran 2024))
?nizleme sürümüECMAScript 2025[3] Bunu Vikiveri'de düzenleyin (27 Mart 2024 (16 ay ?nce) (27 Mart 2024))
?nemli uygulamalar?V8, JavaScriptCore, SpiderMonkey, Chakra
EtkilendikleriJava,[4][5] Scheme,[5] Self,[6] AWK,[7] HyperTalk[8]
EtkiledikleriActionScript, AssemblyScript, CoffeeScript, Dart, Haxe, JS++, Objective-J, Opa, TypeScript
Ola?an dosya uzant?lar?
  • .js
  • .cjs
  • .mjs[9]
Web sitesiecma-international.org/publications-and-standards/standards/ecma-262/
百度 身为党总裁的首相安倍晋三就学校法人“森友学园”相关财务省审批文件篡改问题再次道歉,称“深表歉意”。

JavaScript[10] (genellikle JS olarak k?salt?l?r), HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir.[11] Web sitelerinin %97'sinden fazlas?, web sayfas? hareketleri i?in istemci taraf?nda JavaScript kullan?rlar [12] ve kullan?lan kodlar genellikle ü?üncü taraf kitapl?klar? i?erir.[13] Tüm büyük web taray?c?lar?nda, kaynak kodunu kullan?c?lar?n cihazlar?nda yürütebilmek i?in ?zel bir JavaScript motoru bulunur.

JavaScript, ECMAScript standard?na uyan, genellikle e? zamanl? olarak derlenmi?, üst düzey bir dildir.[14] Dinamik yazma, prototip tabanl? obje y?nelimi ve birinci s?n?f i?levlere sahiptir. Olay odakl?, i?levsel ve zorunlu programlama stillerini destekleyen ?oklu paradigmad?r. Metin, tarihler, düzenli ifadeler, standart veri yap?lar? ve Belge Obje Modeli (DOM) ile ?al??mak i?in uygulama programlama arayüzlerine (API'ler) sahiptir.

ECMAScript standard?, a? olu?turma, depolama veya grafik olanaklar? gibi herhangi bir giri?/??k?? (I/O) i?ermez. Pratikte, web taray?c?s? veya di?er ?al??t?rma ortamlar?, I/O i?in JavaScript API'leri sa?larlar.

JavaScript motorlar? ba?lang??ta yaln?zca web taray?c?lar?nda kullan?l?yordu, ancak günümüzde baz? sunucular?n ve ?e?itli uygulamalar?n da temel bile?enleridir. Bu kullan?m i?in en yayg?n ?al??ma zaman? sistemi Node.js'dir.

Java ve JavaScript'in ad, s?zdizimi ve ilgili standart kitapl?klar a??s?ndan benzerlikleri olsa da, iki dil birbirinden farkl?d?r ve tasar?m a??s?ndan da büyük farkl?l?klar g?sterir.

Netscape'te Olu?turma

[de?i?tir | kayna?? de?i?tir]

Grafik kullan?c? arayüzüne sahip ilk web taray?c?s? Mosaic, 1993 y?l?nda piyasaya sürüldü. Teknik bilgisi olmayan ki?ilerin eri?ebildi?i, yeni ortaya ??kan World Wide Web'in h?zl? büyümesinde ?nemli bir rol oynam??t?r.[15] Mosaic'in ?nde gelen geli?tiricileri daha sonra 1994'te daha parlak bir gelece?i oldu?u dü?ünülen Netscape Navigator taray?c?s?n? piyasaya süren Netscape ?irketini kurdular. Netscape Navigator h?zla en ?ok kullan?lan taray?c? haline geldi.[16][17]

Web'in yeni ?ekillenmeye ba?lad??? bu y?llarda, web sayfalar? yaln?zca statik olabilirdi ve sayfa taray?c?ya yüklendikten sonra dinamik davran?? yetene?inden de yoksundu. Geli?en web geli?tirme sahnesinde, programlamac?lar?n bu s?n?rlaman?n kald?r?lmas?na y?nelik istekleri vard?, bu nedenle 1995'te Netscape, Navigator'a bir komut dosyas? dili eklemeye karar verdi. Bunu ba?armak i?in iki yol izlediler: Java programlama dilini yerle?tirmek i?in Sun Microsystems ile i? birli?i yaparken, ayn? zamanda Scheme dilini yerle?tirmek i?in de Brendan Eich'i i?e ald?lar.[5]

Netscape y?netimi k?sa süre sonra Eich i?in en iyi se?ene?in Java'ya benzer ve daha az Scheme veya di?er mevcut komut dosyas? dillerine benzeyen yeni bir dil tasarlamak oldu?una karar verdi.[5] Eylül 1995'te Navigator beta'n?n bir par?as? olarak ilk sunuldu?unda, eklenen yeni dil ve yorumlay?c? uygulamas? LiveScript olarak adland?r?lsa da, Aral?k ay?nda resmi sürüm i?in ad? JavaScript olarak de?i?tirildi.[5][18]

JavaScript ad?n?n se?imi, do?rudan Java ile ilgili oldu?u ima edilerek kafa kar???kl???na neden oldu. O zamanlar dot-com balonu patlam??t? ve Java henüz yeni bir programlama dili idi, bu nedenle Eich, JavaScript ad?n? Netscape'in bir pazarlama takti?i olarak g?rdü.[19]

Microsoft taraf?ndan benimsenmesi

[de?i?tir | kayna?? de?i?tir]

Microsoft, 1995 y?l?nda Internet Explorer'? piyasaya sürerek Netscape ile bir taray?c? sava??na yol a?t?. JavaScript cephesinde, Microsoft, JScript adl? kendi yorumlay?c?s?n? olu?turmak i?in Navigator yorumlay?c?s?nda tersine mühendislik yapt?.[20]

JScript ilk olarak 1996'da, CSS i?in ilk ve HTML uzant?lar? ile birlikte piyasaya sürüldü. Bu uygulamalar?n her biri, Navigator'daki benzerlerinden belirgin ?ekilde farkl?yd?.[21][22] Bu farkl?l?klar, geli?tiricilerin web sitelerinin her iki taray?c?da da sa?l?kl? ?ekilde ?al??mas?n? zorla?t?rd? ve birka? y?l boyunca "En iyi Netscape'te g?rüntülenir" ve "En iyi Internet Explorer'da g?rüntülenir" ?eklinde logolar?n yayg?n olarak kullan?lmas?na yol a?t?.[21][23]

JScript'in yükseli?i

[de?i?tir | kayna?? de?i?tir]

Kas?m 1996'da Netscape, JavaScript'i Ecma International'a tüm taray?c? sat?c?lar?n?n uyabilece?i standart bir belirtimin ba?lang?? noktas? olarak sundu. Bu, Haziran 1997'de ilk ECMAScript dil spesifikasyonunun resm? olarak yay?nlanmas?na yol a?t?.

Standartlar süreci, ECMAScript 2'nin Haziran 1998'de ve ECMAScript 3'ün Aral?k 1999'da piyasaya sürülmesiyle birka? y?l boyunca devam etti. ECMAScript 4 üzerindeki ?al??malar ise 2000 y?l?nda ba?lad?.[20]

Bu arada Microsoft, taray?c? pazar?nda giderek daha bask?n bir konuma geldi. 2000'lerin ba??nda, Internet Explorer'?n pazar pay? %95'e ula?t?.[24] Bu durum, JScript'in Web'de istemci taraf? komut dosyas? olu?turmak i?in ger?ek bir standart haline geldi?i anlam?n? ta??yordu.

Microsoft ba?lang??ta standartlar sürecine kat?ld? ve baz? ?nerileri kendi JScript dilinde uygulad?, ancak sonunda Ecma ?al??mas? üzerinde i? birli?ini durdurdu. B?ylece ECMAScript 4 yenilmi? oldu.

Büyüme ve standardizasyon

[de?i?tir | kayna?? de?i?tir]

2000'lerin ba??nda Internet Explorer'?n hakimiyeti d?neminde, istemci taraf? komut dosyas? olu?turma y?ntemi olduk?a durgundu. Bu, Netscape'in halefi Mozilla'n?n Firefox taray?c?s?n? piyasaya sürdü?ü 2004 y?l?nda de?i?meye ba?lad?. Firefox bir?ok ki?i taraf?ndan iyi bir ?ekilde kar??land? ve Internet Explorer'dan ?nemli bir pazar pay?n? kendisine ald?.[25]

2005 y?l?nda Mozilla, ECMA International'a kat?ld? ve ECMAScript for XML (E4X) standard? üzerinde ?al??maya ba?lad?. Bu, Mozilla'n?n bir ECMAScript 4 tasla??na dayanan ActionScript 3 dilinde E4X'i uygulayan Macromedia (daha sonra Adobe Systems taraf?ndan sat?n al?nd?) ile ortak olarak ?al??mas?na yol a?t?. Hedef, ActionScript 3'ü yeni ECMAScript 4 olarak standart hale getirmekti. Bu ama?la Adobe Systems, Tamarin uygulamas?n? a??k kaynakl? bir proje olarak yay?nlad?. Ancak, Tamarin ve ActionScript 3, yerle?ik istemci taraf? komut dosyas? olu?turmaktan ?ok farkl?yd? ve Microsoft'un i? birli?i olmadan, ECMAScript 4 hi?bir zaman istenen sonu?lar? vermedi.

Bu arada, ECMA ?al??mas?na ba?l? olmayan a??k kaynak topluluklar?nda ?ok ?nemli geli?meler ya?an?yordu. 2005'te Jesse James Garrett, Ajax terimini türetti?i ve verilerin arka planda yüklenebilece?i web uygulamalar? olu?turmak i?in JavaScript'in omurgas? oldu?u bir dizi teknolojiyi tan?mlad??? ve tam sayfa gereksinimini ortadan kald?rd??? bir WhiteBook yay?nlad?. Bu, a??k kaynak kitapl?klar?n ve onlar?n etraf?nda olu?an topluluklar?n ?ncülük etti?i bir JavaScript r?nesans d?nemini ate?ledi. jQuery, Prototype, Dojo Toolkit ve MooTools dahil olmak üzere bir?ok yeni kitapl?k olu?turuldu.

Google, Chrome taray?c?s?n? 2008'de rakiplerinden daha h?zl? olan V8 JavaScript motoruyla piyasaya sürdü.[26][27] En ?nemli yenilik tam zaman?nda derlemeydi (JIT),[28] bu nedenle di?er taray?c? sat?c?lar?n?n motorlar?n? JIT i?in elden ge?irmeleri gerekiyordu.[29]

Temmuz 2008'de, bu farkl? taraflar Oslo'da bir konferans i?in bir araya geldi. Bu birle?me, konuyla ilgili tüm ?al??malar? birle?tirmek ve dili ileriye ta??mak i?in 2009 ba?lar?nda nihai anla?maya yol a?t?. Sonucu ise Aral?k 2009'da yay?nlanan ECMAScript 5 standard?yd?.

Olgunlu?a ula?mas?

[de?i?tir | kayna?? de?i?tir]

Dil üzerinde iddial? ?al??malar birka? y?l boyunca devam etti ve 2015 y?l?nda ECMAScript 6'n?n yay?nlanmas?yla resm?le?tirilen kapsaml? bir ekleme ve iyile?tirme derlemesiyle sonu?land?.[30]

Node.js'nin 2009 y?l?nda Ryan Dahl taraf?ndan olu?turulmas?, JavaScript'in web taray?c?lar? d???nda kullan?m?nda ?nemli bir art??a yol a?t?. Node, V8 motorunu, bir olay d?ngüsünü ve I/O API'lerini birle?tirerek ba??ms?z bir JavaScript ?al??ma zaman? sistemi sa?lamaktayd?. 2018 itibar?yla, Node milyonlarca geli?tirici taraf?ndan kullan?l?yordu [31] ve npm dünyadaki herhangi bir paket y?neticisinden ?ok daha fazla modüle sahipti.[32]

ECMAScript taslak belirtimi ?u anda GitHub'da herkese a??k bir ?ekilde korunmaktad?r ve sürümler düzenli ?ekilde y?ll?k anl?k g?rüntüler arac?l???yla üretilmektedir.[33] Dildeki olas? revizyonlar, kapsaml? bir teklif süreciyle incelenir.[34][35] Art?k, sürüm numaralar? yerine geli?tiriciler, gelecek ?zelliklerin durumunu tek tek kontrol etmektedirler.[33]

Mevcut JavaScript ekosisteminde bulunan bir?ok kitapl?k ve ?er?evenin, baz?lar? yerle?ik programlama uygulamalar? ve web taray?c?lar?n?n d???nda JavaScript'in farkl? kullan?m alanlar? i?in olu?turulmu?tur. Ayr?ca, tek sayfal?k uygulamalar?n ve di?er JavaScript a??rl?kl? web sitelerinin artmas?yla birlikte, geli?tirme sürecine yard?mc? olmak i?in birka? aktar?c? da olu?turulmu?tur.[36]

Ticari Marka

[de?i?tir | kayna?? de?i?tir]

"JavaScript" ad?, Oracle Corporation'?n Amerika Birle?ik Devletleri'ndeki ticari markas?d?r.[37][38]

Web sitesi istemci taraf? kullan?m?

[de?i?tir | kayna?? de?i?tir]

JavaScript, web sitelerinin % 97'sinin bu ama?la kulland???, Web'in bask?n istemci taraf? komut dosyas? dilidir.[12] Komut dosyalar? HTML belgelerine g?mülür veya bunlar da dahil edilmi? olur. B?ylelikle kodlar DOM ile etkile?ime girer. Tüm büyük web taray?c?lar?nda, kodu kullan?c?n?n cihaz?nda yürüten yerle?ik bir JavaScript motoru bulunur.

Komut dosyas?yla yaz?lm?? davran?? ?rnekleri

[de?i?tir | kayna?? de?i?tir]

Kitapl?klar ve ?er?eveler

[de?i?tir | kayna?? de?i?tir]

Web sitelerinin %80'inden fazlas?, istemci taraf? komut dosyas? olu?turma i?in bir ü?üncü taraf JavaScript kitapl??? veya web ?er?evesi kullan?rlar.[13]

jQuery, web sitelerinin %75'inden fazlas? taraf?ndan kullan?lan a??k ara en popüler kitapl?kt?r.[13] Facebook, web sitesi i?in React kitapl???n? olu?turdu ve daha sonra bunu a??k kaynak olarak yay?nlad?; Twitter dahil di?er pek ?ok site günümüzde bunu kullanmaktad?r. Ayn? ?ekilde Google'?n YouTube ve Gmail'i de dahil olmak üzere web siteleri i?in olu?turdu?u Angular ?er?evesi art?k ba?kalar? taraf?ndan kullan?labilen a??k kaynakl? bir projedir.[13]

Buna kar??l?k, "Vanilla JS" terimi, herhangi bir kitapl?k veya ?er?eve kullanmayan, bunun yerine tamamen standart JavaScript i?levselli?ine dayanan web siteleri i?in olu?turulmu?tur.[39]

Di?er kullan?mlar?

[de?i?tir | kayna?? de?i?tir]

JavaScript kullan?m?, web taray?c?s? k?klerinin ?tesine ge?mi?tir. JavaScript motorlar? art?k hem sunucu taraf? web sitesi da??t?mlar? hem de taray?c? d??? uygulamalar i?in ?e?itli di?er yaz?l?m sistemlerine yerle?tirilmi?tir.

Sunucu taraf? JavaScript kullan?m?n? te?vik etmeye y?nelik ilk giri?imler, Netscape Enterprise Server ve Microsoft'un Internet Information Services [40][41] idi, ancak bunlar kü?ük ?zelliklerdi.[42] Sunucu taraf? kullan?m?, 2000'lerin sonlar?nda Node.js ve di?er yakla??mlar?n olu?turulmas?yla birlikte büyümeye ba?lad?.[42]

Electron, Cordova, React Native ve di?er uygulama ?er?eveleri, JavaScript'te uygulanan davran??la bir?ok uygulama olu?turmak i?in kullan?lm??t?r. Taray?c? olmayan di?er uygulamalar, PDF belgelerini komut dosyas? yazmak i?in Adobe Acrobat deste?i [43] ve JavaScript ile yaz?lm?? GNOME Shell uzant?lar?n? i?erir.[44]

JavaScript, son zamanlarda baz? g?mülü sistemlerde, genellikle Node.js'den yararlan?larak g?rünmeye ba?lad?.[45][46][47]

A?a??daki ?zellikler, aksi a??k?a belirtilmedi?i sürece, uyumlu tüm ECMAScript uygulamalar? i?in ortakt?r.

Zorunlu ve yap?land?r?lm??

[de?i?tir | kayna?? de?i?tir]

JavaScript, C'nin yap?land?r?lm?? programlama s?zdiziminin ?o?unu destekler (?rne?in, if ifadeleri, while d?ngüleri, switch ifadeleri, do while d?ngüleri vb.). K?smi bir istisna kapsam belirlemedir: ba?lang??ta JavaScript yaln?zca var ile i?lev kapsam?na sahipti; daha sonra ECMAScript 2015'te let ve const anahtar s?zcükleriyle blok kapsam? eklendi. C gibi, JavaScript de expressionslar ve statementslar aras?nda bir ayr?m yapar. C'den bir s?zdizimsel fark? da, noktal? virgüllerin (deyimleri sonland?ran) atlanmas?na izin veren otomatik noktal? virgül eklemedir.[48]

Zay?f yaz?lm??

[de?i?tir | kayna?? de?i?tir]

JavaScript zay?f yaz?lm??t?r, bu kullan?lan i?leme ba?l? olarak belirli türlerin dolayl? olarak yay?nland??? anlam?na gelir.[49]

  • ?kili + operat?rü, her iki i?lenen de say? olmad??? sürece her iki i?leneni de bir dizeye atar. Bunun nedeni, toplama operat?rünün bir birle?tirme operat?rü olarak da kullan?lmas?ndan dolay?d?r.
  • ?kili - i?leci her zaman her iki i?leneni de bir say?ya atar
  • Her iki birli operat?r (+, -) i?leneni her zaman bir say?ya ?evirir.

De?erler a?a??daki gibi dizgelere d?nü?türülür:[49]

  • Dizeler oldu?u gibi b?rak?l?r
  • Say?lar dize temsillerine d?nü?türülür
  • Dizilerin ??eleri dizelere d?nü?türülür ve ard?ndan virgül (,) ile birle?tirilirler.
  • Di?er objeler [object Object] dizesine d?nü?türülür; burada Object, objenin yap?c?s?n?n ad?d?r

De?erler, dizelere d?nü?türülerek ve ard?ndan dizeler de say?lara d?nü?türülerek, say?lara d?nü?türülür. Bu süre?ler, s?ras?yla dize ve say? d?kümü i?in prototip üzerinde toString ve valueOf i?levleri tan?mlanarak de?i?tirilebilir.

JavaScript, kurallar?n karma??kl??? tutars?zl?kla kar??t?r?labilece?inden, bu d?nü?ümleri uygulama ?ekli nedeniyle ele?tiriler alm??t?r.[49][50] ?rne?in, bir dizeye say? eklerken, say? birle?tirme yap?lmadan ?nce bir dizeye d?nü?türülür, ancak bir dizeden bir say? ??kar?l?rken, ??karma i?lemi yap?lmadan ?nce dize bir say?ya d?nü?türülür.

JavaScript türü d?nü?ümleri
Sol ??leyici Operat?r Sa? ??leyici Sonu?
[] (bo? dizi/array) + [] (bo? dizi/array) "" (bo? string/dize)
[] (bo? dizi/array) + {} (bo? obje/nesne) "[object Object]" (dize/string)
false (boole/do?ru-yanl??) + [] (bo? dizi/array) "false" (dize/string)
"123" (dize/string) + 1 (say?/number) "1231" (dize/string)
"123" (dize/string) - 1 (say?/number) 122 (say?/number)
"123" (dize/string) - "abc" (dize/string) NaN (say?/number)

Genellikle, {} + [] ile sonu?lanan 0 (say?) da belirtilir. Bu yan?lt?c?d?r: {} bo? bir obje yerine bo? bir kod blo?u olarak yorumlan?r ve bo? dizi kalan unary (tekli) + operat?rü taraf?ndan bir say?ya d?nü?türülür. ?fadeyi parantez i?ine al?rsan?z ({} + []) küme parantezleri bo? bir obje olarak yorumlan?r ve ifadenin sonucu beklendi?i gibi "[object Object]" olur.[49]

Yaz?m
JavaScript, di?er ?o?u betik dili gibi dinamik olarak yaz?l?r . Bir tür, bir ifade yerine bir de?erle ili?kilendirilir. ?rne?in, ba?lang??ta bir say?ya ba?l? olan bir de?i?ken, bir dizgeye yeniden atanabilir.[51] JavaScript, ?rdek yaz?m? dahil, objelerin türünü test etmenin ?e?itli yollar?n? destekler. [52]
?al??ma zaman? de?erlendirmesi
JavaScript, ?al??ma zaman?nda dizeler olarak sa?lanan ifadeler eval bir de?erlendirme i?levi i?erir.

Nesne (Obje) y?nelimi (prototip tabanl?)

[de?i?tir | kayna?? de?i?tir]

JavaScript'teki prototip kal?t?m, Douglas Crockford taraf?ndan ?u ?ekilde tan?mlan?r: EKS?K ALAN JavaScript'te bir obje, bir prototiple büyütülmü? bir ili?kisel dizidir (a?a??ya bak?n); her anahtar bir objenin ?zelli?i i?in ad sa?lar ve b?yle bir ad? belirtmenin iki s?zdizimsel yolu vard?r: nokta notasyonu (obj.x = 10) ve parantez g?sterimi (obj['x'] = 10). Bir ?zellik, ?al??ma zaman?nda eklenebilir, geri tepebilir veya silinebilir. Bir objenin ?o?u ?zelli?i (ve bir objenin prototip miras zincirine ait olan herhangi bir ?zellik), bir for...in d?ngüsü kullan?larak numaraland?r?labilir.

Prototipler
JavaScript, di?er bir?ok nesne y?nelimli dilin kal?t?m i?in s?n?flar? kulland??? prototipleri kullan?r.[53] JavaScript'te prototiplerle bir?ok s?n?f tabanl? ?zelli?i simüle etmek mümkündür.[54]
Obje olu?turucu olarak fonksiyonlar
Fonksiyonlar, tipik rolleriyle birlikte obje olu?turucular olarak ikiye ayr?l?r. Bir fonksiyon ?a?r?s?na new ile ?nek eklemek, yap?c?dan ?zellikleri ve y?ntemleri ( Object prototipinden ?zellikler dahil) devralan bir prototip ?rne?i olu?turur.[55] ECMAScript 5, Object prototipinden otomatik olarak miras al?nmadan bir ?rne?in a??k bir ?ekilde olu?turulmas?na izin veren Object.create y?ntemini sunar (eski ortamlar prototipi null ??esine atayabilir).[56] prototype ?zelli?i, yeni objenin dahili prototipi i?in kullan?lan objeyi belirler. Yap?c? olarak kullan?lan fonksiyonun prototipi de?i?tirilerek yeni y?ntemler eklenebilir. JavaScript'in Array veya Object gibi yerle?ik olu?turucular? da de?i?tirilebilen prototiplere sahiptir. Object prototipini de?i?tirmek mümkün olsa da, JavaScript'teki ?o?u obje, Object prototipinden y?ntemleri ve ?zellikleri devralaca??ndan ve prototipin de?i?tirilmesini beklemeyebilece?inden, genellikle k?tü uygulama olarak kabul edilirler.[57]
Metod olarak fonksiyonlar
Bir?ok nesne y?nelimli dilden farkl? olarak, i?lev tan?m? ile metot tan?m? aras?nda bir ayr?m yoktur. Bunun yerine, fonksiyon ?a?r?s? s?ras?nda ayr?m olu?ur; Bir fonksiyon, bir objenin metodu olarak ?a?r?ld???nda, fonksiyonun yerel this anahtar s?zcü?ü, o ?a?r? i?in o objeye ba?lan?r.

Fonksiyonel

[de?i?tir | kayna?? de?i?tir]

Bir fonksiyon birinci s?n?ft?r ; bir fonksiyon bir obje olarak kabul edilir.[58] Bu nedenle, bir fonksiyonun .call() ve .bind() gibi ?zellikleri ve metotlar? olabilir.[59] ?? i?e fonksiyon, ba?ka bir fonksiyon i?inde tan?mlanan bir fonksiyondur. D?? fonksiyon her ?a?r?ld???nda olu?turulur. Ek olarak, i? i?e ge?mi? her i?lev s?zcüksel bir kapan?? olu?turur: d?? i?levin s?zcüksel kapsam? (herhangi bir sabit, yerel de?i?ken veya ba??ms?z de?i?ken de?eri dahil), d?? i?levin yürütülmesi sona erdikten sonra bile, her bir i? fonksiyon objesinin i? durumunun bir par?as? haline gelir. . [52] JavaScript ayr?ca anonim i?levleri de destekler.

Yetkilendirme

[de?i?tir | kayna?? de?i?tir]

JavaScript, ?rtük ve a??k yetkilendirmeyi destekler.

Rol olarak fonksiyonlar [?zellikler (Traits) ve Kar???mlar (Mixins)]
JavaScript, Traits [60] ve Mixins gibi Rol modellerinin ?e?itli fonksiyon tabanl? uygulamalar?n? da yerel olarak destekler. B?yle bir fonksiyon, function g?vdesi i?inde this anahtar s?zcü?üne ba?l? en az bir y?ntemle ek davran??? tan?mlar. Daha sonra bir Rol, call yoluyla a??k?a devredilmeli veya prototip zinciri arac?l???yla payla??lmayan ek davran??lara sahip olmas? gereken objelere apply (uygulama) edilmelidir.
Obje kompozisyonu ve kal?t?m
A??k fonksiyon tabanl? yetkilendirme JavaScript'te kompozisyonu kapsarken, ?rtük yetkilendirme, ?rne?in, bir objeyle ilgili olabilecek ancak do?rudan bir objeye ait olmayan bir metot bulmak i?in prototip zinciri her yürüdü?ünde zaten ger?ekle?ir. Metot bulundu?unda, bu objenin ba?lam?nda ?a?r?l?r. Bu nedenle JavaScript'teki kal?t?m, yap?c? fonksiyonlar?n prototip ?zelli?ine ba?l? bir yetkilendirme otomatizmi taraf?ndan kapsan?r.

JS s?f?r indeksli bir dildir.

?al??ma zaman? ortam?
JavaScript, komut dosyalar?n?n ortamla etkile?ime girebilece?i objeler ve metotlar (?rne?in, bir web sayfas? DOM u) sa?lamak i?in tipik olarak bir ?al??ma zaman? ortam?na (?rne?in bir web taray?c?s? ) dayan?r. Bu ortamlar tek i? par?ac?kl?d?r . JavaScript ayr?ca, komut dosyalar?n? (?rne?in, HTML <script> ??eleri) dahil etme/i?e aktarma yetene?i sa?lamak i?in ?al??ma zaman? ortam?na da güvenir. Bu, ba?l? ba??na bir dil ?zelli?i de?ildir, ancak ?o?u JavaScript uygulamas?nda yayg?nd?r. JavaScript, bir kuyruktan gelen mesajlar? birer birer i?ler. JavaScript, her yeni mesajla ili?kili bir fonksiyonu ?a??r?r ve fonksiyonun ba??ms?z de?i?kenleri ve yerel de?i?kenlerle bir ?a?r? y???n? (call stack) ?er?evesi olu?turur. ?a?r? y???n?, fonksiyonun ihtiya?lar?na g?re kü?ülür veya büyür. Fonksiyon tamamland?ktan sonra ?a?r? y???n? bo? oldu?unda, JavaScript s?radaki bir sonraki mesaja ilerler. Buna olay d?ngüsü (event loop) denir ve "tamamlanmak i?in ?al??t?r" olarak tan?mlan?r, ?ünkü her mesaj bir sonraki mesaj dikkate al?nmadan ?nce tamamen i?lenir. Ancak, dilin e?zamanl?l?k modeli, olay d?ngüsünü engellemeyen olarak tan?mlar: program giri?i/??k???, olaylar ve geri arama i?levleri (callback fonksiyon) kullan?larak ger?ekle?tirilir. Bu, JavaScript'in bir veritaban? sorgusunun bilgi d?ndürmesini beklerken bir fare t?klamas?n? i?leyebilece?i anlam?na gelir.[61]
De?i?ken (Varyadik) fonksiyonlar
Bir fonksiyona s?n?rs?z say?da parametre iletilebilir. Fonksiyon bunlara bi?imsel parametreler arac?l???yla ve ayr?ca yerel arguments objesi arac?l???yla eri?ebilir. bind y?ntemi kullan?larak de?i?ken fonksiyonlar da olu?turulabilir.
Dizi ve obje de?i?mezleri (literal)
Bir?ok komut dosyas? dili gibi, diziler ve objeler (di?er dillerdeki ili?kisel diziler ) k?sa bir k?sayol s?zdizimi ile olu?turulabilir. Asl?nda, bu de?i?mez de?erler JSON veri format?n?n temelini olu?turur.
Düzenli ifadeler (Regular expressions)
JavaScript ayr?ca, yerle?ik dize i?levlerinden daha karma??k olan metin i?leme i?in ?zlü ve gü?lü bir s?zdizimi sa?layan Perl'e benzer ?ekilde düzenli ifadeleri de destekler.[62]
S?zler (Promise) ve zaman uyumsuz/bekleme (Async/await)
JavaScript, zaman uyumsuz i?lemleri i?lemek i?in promise lar? ve Async/await destekler. Yerle?ik bir Promise objesi, vaatleri i?lemek ve i?leyicileri e?zamans?z bir eylemin nihai sonucuyla ili?kilendirmek i?in i?levsellik sa?lar. Son zamanlarda, geli?tiricilerin birden ?ok JavaScript promise ?n? birle?tirmesine ve farkl? senaryolara dayal? i?lemler yapmas?na olanak tan?yan JavaScript belirtiminde birle?tirici y?ntemler tan?t?ld?. Tan?t?lan y?ntemler ?unlard?r: Promise.race, Promise.all, Promise.allSettled ve Promise.any. Zaman uyumsuz/bekleme, e?zamans?z, engellemesiz bir i?levin s?radan bir e?zamanl? i?leve benzer bir ?ekilde yap?land?r?lmas?na izin verir. Asenkron, bloke edici olmayan kod, minimum ek yük ile geleneksel senkronize, bloke edici koda benzer ?ekilde yap?land?r?labilir.

Standart olmayan ?zellikler

[de?i?tir | kayna?? de?i?tir]

Tarihsel olarak, baz? JavaScript motorlar? bu standart olmayan ?zellikleri destekledi:

  • ko?ullu catch cümleleri (Java gibi)
  • Dizi kavray??lar? (array comprehensions) ve ürete? ifadeleri (Python gibi)
  • k?sa fonksiyon ifadeleri (function(args) expr ; bu deneysel s?zdizimi ok i?levlerinden ?nce gelir)
  • ECMAScript for XML (E4X), ECMAScript'e yerel XML deste?i ekleyen bir uzant? (sürüm 21 [63] den beri Firefox'ta desteklenmemektedir)

Basit ?rnekler

[de?i?tir | kayna?? de?i?tir]

JavaScript'teki de?i?kenler, var,[64] let [65] veya const [66] anahtar s?zcükleri kullan?larak tan?mlanabilir.

// 'x' ad?nda bir fonksiyon kapsaml? (function-scoped) de?i?ken bildirir ve buna üstü kapal? ?ekilde 
// 'undefined' ?zel de?erini atar. De?eri olmayan de?i?kenler otomatik 'undefined' (tan?ms?z) olarak ayarlan?r.

var x;

// De?i?kenler, bunun gibi elle 'tan?ms?z' olarak ayarlanabilir 
var x2 = undefined;

// ?rnek `y` ad?nda bir de?i?keni blok kapsam?nda (block-scoped) bildirir ve 
// de?i?kenin bir de?eri olmad??? i?in onu `undefined` (tan?ms?z) olarak ayarlar. 
// "let" anahtar s?zcü?ü ECMAScript 2015'te tan?t?lm??t?r.
let y;

// Blok kapsam?nda (block-scoped) bir bildirim yapar, `z` art?k yeniden de?er atanamaz olur ve 
// onu bir string de?i?mezine ayarlar. `const` anahtar s?zcü?ü ECMAScript 2015'te tan?t?lm??t?r ve
// yaln?zca net bir ?ekilde atan?r.

// `const` anahtar s?zcü?ü 'sabit' anlam?na gelir ki bu nedenden dolay? 'de?eri' (value) sabit oldu?undan
// de?i?ken baz? ufak istisnalar d???nda yeni de?er alamaz/atanamaz.
const z = "bu anahtar s?zcü?ünün de?eri yani buraya yeniden atama yap?lamaz!";

// `benimSayim` isimli bir de?i?ken bildirilmi? ve de?er (value) olarak ona bir say? de?i?mezi
// ?rne?imizde `2`) atanm??t?r.
let benimSayim = 2;

// `benimSayim` ? yeniden atar ve onun de?erini bir dizi de?i?mezi (?rne?imizde `"bir ?eyler"`) atar.
// JavaScript dinamik olarak yaz?lm?? bir dildir, bu nedenle bu y?nergelerine uygundur.
benimSayim = "bir ?eyler";

Yukar?daki ?rnekte, hepsinin ?nünde iki e?ik ?izgi bulunan yorumlara dikkat edin. JavaScript'te yerle?ik Giri?/??k?? (I/O) i?levi yoktur; ?al??ma zaman? ortam? bunu sa?lar. Sürüm 5.1'deki ECMAScript belirtimi ?unlar? belirtir:[67]

asl?nda, bu spesifikasyonda harici veri giri?i veya hesaplanan sonu?lar?n ??k??? i?in herhangi bir ?art yoktur.

Ancak, ?o?u ?al??ma zaman? ortam?nda ??kt? yazd?rmak i?in kullan?labilecek bir console objesi [68] bulunur. ??te JavaScript'te minimalist bir Hello World program? :

console.log("Merhaba, Dünya!");

HTML belgelerinde bir ??kt? i?in bu program gereklidir:

// "write" metodu kullan?larak, metin nodu (dü?ümü) yaz?labilir.
document.write('bir ?eyler');

// HTML elementleri de olu?turulabilir. ?ncelikle DOM üzerinde olu?turulmalar? gerekir
const benimElementim = document.createElement('div');

// Class veya id gibi ?znitelikler olu?turulabilir.
benimElementim.classList.add('bir-seyler');
// benimElementim.classList.add("anotherclass");
benimElementim.id = 'baska-seyler';

// Burada, ?znitelik ??yle g?rünecektir: <span data-attr="baz"></span>
benimElementim.setAttribute('data-atrr', 'baz');

// Son olarak, onu HTML'deki <body> ??esine bir alt ??e olarak ekleyin
document.body.appendChild(benimElementim);

// Elementler bir ??e olarak querySelector ile yakalanabilir ya da forEach d?ngüsü ile al?nabilen birden ?ok ??e querySelectorAll ile yakalanabilir.
document.querySelector('.class');
document.querySelector('#id');
document.querySelector('[data-other]');
document.querySelectorAll('.multiple');

Basit bir ?zyinelemeli (recursive) fonksiyon:

function faktoriyel(n) {
  if (n === 0)
    return 1; // 0! = 1

  return n * faktoriyel(n - 1);
}

faktoriyel(3); // 6 sonucunu d?ndürür

ya da a?a??daki ?rnekte oldu?u gibi fakt?riyel hesaplamas?n? kontroller ve ü?lü operat?r vas?tas?yla da kullanabilirsiniz.

function faktoriyel(n) {
    // Yaln?zca pozitif bir say? kullan?lmas?na izin verin yoksa konsolda uyar? g?sterin.
    if (isNaN(n)) {
        console.error("Say?sal olmayan argümana izin verilmemektedir.");
        return NaN; // bu ?zel bir de?erdir ve "Bu Bir Say? De?il" anlam?na gelir.
    }
    if (n === 0)
        return 1; // 0! = 1
    if ( n < 0)
        return undefined; // Negatif say?lar de?er olarak verildi?inde 'tan?ms?z' bildirimi yap?n .
    if (n % 1) {
        console.warn(`Belirtti?iniz ${n} ondal?kl? de?eri en yak?n tam say?ya yuvarlanacakt?r. Tam say? olmayanlar i?in bunun yerine gamma fonksiyonunu kullanmay? dü?ünün.`);
        n = Math.round(n);
    }
    // Yukar?daki kontrolleri kullanmak istemeyebilirsiniz. Zorunlu de?ildir. Bu k?s?mdan sonra ger?ek ?zyinelemeli faktoriyel hesaplama kodlar? yer almaktad?r.

    // A?a??daki sat?rda ?zyinelemeleli fakt?riyel hesaplamada kullan?lan fonksiyon ifadesidir. ES6 ile birlikte tan?t?m? yap?lan ok fonksiyon s?z dizimini kullan?r.
    const ozyinelemeli_hesaplama = a => a > 1 ? a * ozyinelemeli_hesaplama(a - 1) : 1; // '?' ile birlikte ü?lü operat?r kullan?m?na dikkat ediniz.
    return ozyinelemeli_hesaplama(n);
}

document.write(faktoriyel(3)); // 6 d?ndürür

Anonim (isimsiz) bir fonksiyon (veya lambda):

let isimsizFonksiyon = () => console.log("?simsiz bir fonksiyon");
isimsizFonksiyon(); // "?simsiz bir fonksiyon" yaz?s?n? konsola getirir.

Bu ?rnek, JavaScript'te fonksiyon kapan??lar?n?n yerel olmayan de?i?kenlerini ba?vuru yoluyla yakalad???n? g?sterir.

Ok i?levleri ilk olarak 6. Bask? - ECMAScript 2015'te tan?t?ld?. JavaScript'te i?lev yazmak i?in s?zdizimini k?salt?rlar. Ok i?levleri anonimdir, bu nedenle olu?turulduktan sonra onlar? ?a??rmak i?in bunlara ba?vurmak i?in bir de?i?ken gerekir.

Ok i?levi (arrow fonksiyon) ?rne?i:

// Ok fonksiyonlar? (arrow functions) `function` anahtar s?zcü?ünü kullanmadan
// fonskiyon yazmam?za izin verir.
// Buradaki `uzun_ornek` bir anonymous function value sunu g?sterir.
const uzun_ornek = (giris1, giris2) => {
  console.log("Merhaba, Dünya!");
  const cikti = giris1 + giris2;

  return cikti;
};

// Parantez yoksa, ok fonksiyonu yaln?zca ifadeyi (expression) d?ndürür
// Buradaki gibi (giris1 + giris2)
const kisa_ornek = (giris1, giris2) => giris1 + giris2;

console.log(kisa_ornek(2, 3)); // 5 d?ndürür ve ard?ndan "Merhaba, Dünya!" yazd?r?r
console.log(uzun_ornek(2, 5)); // 7 d?ndürür

// Bir ok fonksiyonunun yaln?zca bir parametresi varsa, parantezler kald?r?labilir.
const parantezsiz = giris => giris + 2;

console.log(parantezsiz(3)); // 5 d?ndürür

JavaScript'te objeler, fonskiyonlarla ayn? ?ekilde olu?turulur; bu nedenle ojbeler bir fonksiyon objesi olarak bilinirler.

Obje ?rne?i:

let kullanici = {
  adi: "Ahmet",
  yasi: 41,

  selamVer() {
    // "this" burada "mevcut obje" dir
    alert(this.adi);
  }

};

kullanici.selamVer(); // Ahmet

De?i?ken fonksiyon g?sterimi (arguments ?zel bir de?i?kendir):[69]

function topla() {
  let x = 0;

  for (let i = 0; i < arguments.length; ++i)
    x += arguments[i];

  return x;
}

console.log(topla(1, 2)); // 3 d?ndürür
console.log(topla(1, 2, 3)); // 6 d?ndürür

An?nda ?a?r?lan fonksiyon ifadeleri genellikle kapan??lar? (closures) olu?turmak i?in kullan?l?r. Kapan??lar, ?zelliklerin (properties) ve metotlar?n bir ad alan?nda (namespace) toplanmas?na ve baz?lar?n?n ?zel hale getirilmesine izin verir:

let sayac = (function() {
  let i = 0; // ?zel ?zellik

  return {  // genel metotlar
    get: function() {
      alert(i);
    },
    set: function(deger) {
      i = deger;
    },
    artir: function() {
      alert(++i);
    }
  };
})(); // modül

sayac.get();   // 0 g?sterir
sayac.set(6);
sayac.artir(); // 7 g?sterir
sayac.artir(); // 8 g?sterir

JavaScript'te modülleri d??a ve i?e aktarma [70]

Export ?rne?i:

/* mymodule.js */
// Bu fonksiyon (i?lev), d??a aktar?lmad??? i?in ?zel olarak kal?r
let topla = (a, b) => {
  return a + b;
}

// De?i?kenleri d??a aktar
export let adi = 'Metin';
export let yasi = 23;

// De?i?kenleri adlar?yla/adland?r?lm?? olarak d??a aktar
export function ekle(sayi1, sayi2) {
  return sayi1 + sayi2;
}

// Class (s?n?f?n) d??a aktar?lmas?
export class Carpma {
  constructor(sayi1, sayi2) {
    this.sayi1 = sayi1;
    this.sayi2 = sayi2;
  }

  ekle() {
    return topla(this.sayi1, this.sayi2);
  }
}

?mport ?rne?i:

// Bir ?zelli?i i?e dahil etme/i?e aktarma
import { ekle } from './mymodule.js';
console.log(ekle(1, 2));
//> 3

// ?oklu ?ekilde ?zellikleri i?e dahil etme/i?e aktarma
import { adi, yasi } from './mymodule.js';
console.log(adi, yasi);
//> "Metin", 23

// Bir modüldeki tüm ?zellikleri dahil etme/i?e aktarma
import * from './module.js'
console.log(adi, yasi);
//> "Metin", 23
console.log(ekle(1,2));
//> 3

Daha geli?mi? ?rnek

[de?i?tir | kayna?? de?i?tir]
/* ?ki say?n?n en kü?ük ortak kat?n? (LCM) bulur */
function LCMCalculator(x, y) { // yap?c?/kurucu fonksiyon
    if (isNaN(x*y)) throw new TypeError("Say?sal olmayan ba??ms?z de?i?kenlere izin verilmemektedir.");
    const checkInt = function(x) { // i? fonksiyon
        if (x % 1 !== 0)
            throw new TypeError(x + " bir tam say? de?il");

        return x;
    };

    this.a = checkInt(x)
    //   noktal? virgül kullan?m? ^^^^ iste?e ba?l?d?r, yeni sat?r yeterlidir
    this.b = checkInt(y);
}
// Bir yap?c?/kurucu taraf?ndan olu?turulan obje ?rneklerinin prototipi, 
// o yap?c?/kurucunun "prototip" ?zelli?idir.
LCMCalculator.prototype = { // obje de?i?mezi
    constructor: LCMCalculator, // bir prototipi yeniden atarken, yap?c?/kurucu ?zelli?ini uygun ?ekilde ayarlay?n
    gcd: function() { // en büyük ortak b?leni hesaplayan y?ntem
        // E?klid algoritmas?:
        let a = Math.abs(this.a), b = Math.abs(this.b), t;

        if (a < b) {
            // de?i?kenlerin takas edilmesi
            // t = b; b = a; a = t;
            [a, b] = [b, a]; // destructuring (y?k?m) atamas?n? kullanarak takas (ES6)
        }

        while (b !== 0) {
            t = b;
            b = a % b;
            a = t;
        }

        // Ortak B?leni (GCD) yaln?zca bir kez hesaplaman?z gerekir, bu nedenle bu y?ntemi "yeniden tan?mlay?n".
        // (Asl?nda yeniden tan?mlama de?ildir - ?rne?in kendisinde tan?mlan?r, 
        // b?ylece this.gcd, LCMCalculator.prototype.gcd yerine bu "yeniden 
        // tan?mlamaya" at?fta bulunur.)
        // LCMCalculator obje üyeleri "a" ve/veya "b" sonradan de?i?tirilirse 
        // bunun yanl?? bir sonuca yol a?aca??n? unutmay?n.
        // Ayr?ca, 'gcd' === "gcd", this['gcd'] === this.gcd
        this['gcd'] = function() {
            return a;
        };

        return a;
    },

    // Obje/Nesne ?zellik adlar?, ?ift (") veya tek (') t?rnak ile s?n?rlanan stringler ile belirtilebilir.
    "lcm": function() {
        // De?i?ken adlar? nesne/obje ?zellikleriyle ?ak??maz, ?rne?in |lcm|, |this.lcm| de?ildir.
        // FP hassas sorunlar?ndan ka??nmak i?in |this.a*this.b| ?eklinde kullanm?yoruz
        let lcm = this.a / this.gcd() * this.b;

        // lcm'yi yaln?zca bir kez hesaplaman?z gerekir, bu nedenle bu metodu "yeniden tan?mlay?n".
        this.lcm = function() {
            return lcm;
        };

        return lcm;
    },

    // Metotlar ayr?ca es6 s?zdizimi kullan?larak da bildirilebilir
    toString() {
        // De?erleri birle?tirmek i?in hem es6 ?ablon de?i?mezlerini 
        // hem de (+) operat?rünü kullanma
        return `LCMCalculator: a = ${this.a}, b = ` + this.b;
    }
};

// Genel ??kt? fonksiyonu tan?mlay?n; bu uygulama yaln?zca Web taray?c?lar? i?in ?al???r
function output(x) {
    document.body.appendChild(document.createTextNode(x));
    document.body.appendChild(document.createElement('br'));
}

// Not: Dizilerin (array) map() ve forEach() metotlar?, JavaScript 1.6'da tan?mlanm??t?r.
// Burada JavaScript'in do?al fonksiyonel/i?levsel yap?s?n? g?stermek i?in kullan?l?rlar.
[
    [25, 55],
    [21, 56],
    [22, 58],
    [28, 56]
].map(function(pair) { // array literal (dizi de?i?mezi) + mapping function (map/e?leme fonksiyonu)
    return new LCMCalculator(pair[0], pair[1]);
}).sort((a, b) => a.lcm() - b.lcm()) // bu kar??la?t?rmal? fonksiyonla s?ralama yap?n; =>, "ok fonksiyonu" bir fonksiyonun k?sa bi?imidir.
    .forEach(printResult);

function printResult(obj) {
    output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());
}

Taray?c? penceresinde a?a??daki ??kt? g?rüntülenmelidir.

LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56
LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168
LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275
LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638

JavaScript ve DOM, k?tü niyetli yazarlara Web arac?l???yla bir istemci bilgisayarda ?al??t?r?lacak komut dosyalar? sunma potansiyeli sa?lar. Taray?c? yazarlar?, iki k?s?tlama kullanarak bu riski en aza indirir. ?lk olarak, komut dosyalar?, dosya olu?turma gibi genel ama?l? programlama g?revlerini de?il, yaln?zca Web ile ilgili eylemleri ger?ekle?tirebilecekleri bir sanal alanda ?al???r. ?kinci olarak, komut dosyalar? ayn? kaynak ilkesiyle s?n?rland?r?lm??t?r: bir Web sitesindeki komut dosyalar?, ba?ka bir siteye g?nderilen kullan?c? adlar?, parolalar veya tan?mlama bilgileri gibi bilgilere eri?emez. JavaScript ile ilgili güvenlik hatalar?n?n ?o?u, ayn? kaynak politikas?n?n veya sanal alan?n ihlali ile ger?ekle?mektedir.

Genel JavaScript'in alt kümeleri (ADsafe, Secure ECMAScript (SES)), ?zellikle ü?üncü taraflarca olu?turulan kodlarda (reklamlar gibi) daha yüksek düzeyde güvenlik sa?lar.[71][72] Closure Toolkit, ü?üncü taraf JavaScript ve HTML'nin güvenli bir ?ekilde yerle?tirilmesi ve yal?t?lmas? i?in ba?ka bir projedir.[73]

??erik Güvenli?i Politikas?, bir Web sayfas?nda yaln?zca güvenilir kodun yürütülmesini sa?laman?n ana y?ntemi ve amac?d?r.

Siteler aras? güvenlik a??klar?

[de?i?tir | kayna?? de?i?tir]

JavaScript ile ilgili yayg?n bir güvenlik sorunu, ayn? kaynak ilkesinin ihlali olan siteler aras? komut dosyas? ?al??t?rmad?r (XSS). XSS güvenlik a??klar?, bir sald?rgan ?evrimi?i bankac?l?k web sitesi gibi hedeflenen bir Web sitesinin kurbana sunulan web sayfas?na k?tü ama?l? bir komut dosyas? eklemesine neden oldu?unda ortaya ??kar. Bu ?rnekteki komut dosyas? daha sonra kurban?n ayr?cal?klar?yla bankac?l?k uygulamas?na eri?ebilir, potansiyel olarak gizli bilgileri if?a edebilir veya kurban?n izni olmadan para transfer edebilir. XSS güvenlik a??klar?na bir ??züm, güvenilmeyen verileri g?rüntülerken HTML ??k???n? kullanmakt?r.

Baz? taray?c?lar, sald?rgan?n k?tü ama?l? komut dosyas? i?eren bir URL sa?lad???nda yans?yan XSS sald?r?lar?na kar?? k?smi koruma i?erir. Ancak, bu taray?c?lar?n kullan?c?lar? bile, k?tü ama?l? kodun bir veritaban?nda depoland??? sald?r?lar gibi di?er XSS sald?r?lar?na kar?? savunmas?zd?r. Yaln?zca sunucu taraf?nda Web uygulamalar?n?n do?ru tasar?m? XSS'yi tamamen ?nleyebilir.

Taray?c? yazarlar?n?n uygulama hatalar? nedeniyle de XSS güvenlik a??klar? olu?abilir.[74]

Bir ba?ka siteler aras? güvenlik a????, siteler aras? istek sahtecili?idir (CSRF). CSRF'de, bir sald?rgan?n sitesindeki kod, kurban?n taray?c?s?n?, kullan?c?n?n hedef sitede ama?lamad??? eylemleri ger?ekle?tirmesi i?in kand?r?r (bir bankada para transferi gibi). Hedef siteler, istek do?rulamas? i?in yaln?zca tan?mlama bilgilerine güvendi?inde, sald?rgan?n sitesindeki koddan kaynaklanan istekler, ba?latan kullan?c?n?n ayn? ge?erli oturum a?ma bilgilerini ta??yabilir. Genel olarak, CSRF'nin ??zümü, kal?c? etkileri olabilecek herhangi bir iste?in kimli?ini do?rulamak i?in yaln?zca ?erezlerde de?il, gizli bir form alan?nda bir kimlik do?rulama de?eri talep etmektir. HTTP Y?nlendiren ba?l???n? kontrol etmek de yard?mc? olabilir.

"JavaScript ele ge?irme", bir sald?rgan?n sitesindeki <script> etiketinin, kurban?n sitesinde JSON veya JavaScript gibi ?zel bilgiler d?ndüren bir sayfadan yararland??? bir CSRF sald?r?s? türüdür. Olas? ??zümler ?unlar? i?erir:

  • ?zel bilgi d?ndüren herhangi bir yan?t i?in POST ve GET parametrelerinde bir kimlik do?rulama belirteci eklemek.

Mü?teriye duyulan yanl?? güven

[de?i?tir | kayna?? de?i?tir]

?stemci-sunucu uygulamalar?n?n geli?tiricileri, güvenilmeyen istemcilerin sald?rganlar?n denetimi alt?nda olabilece?ini bilmelidir. Uygulama yazar?, JavaScript kodunun ama?land??? gibi (veya hi?) ?al??aca??n? varsayamaz ?ünkü koda g?mülü herhangi bir s?r, belirli bir dü?man taraf?ndan ay?klanabilir. Baz? ??kar?mlar ?unlard?r:

  • Web sitesi yazarlar?, ham kaynak kodunun istemciye g?nderilmesi gerekti?inden JavaScript'lerinin nas?l ?al??t???n? tam olarak gizleyemezler. Kod gizlenebilir, ancak ?a??rtma tersine mühendislikle yap?labilir.
  • JavaScript form do?rulamas? güvenlik de?il, yaln?zca kullan?c?lar i?in kolayl?k sa?lar. Bir site, kullan?c?n?n hizmet ?artlar?n? kabul etti?ini do?rularsa veya yaln?zca say? i?ermesi gereken alanlardan ge?ersiz karakterleri filtrelerse, bunu yaln?zca istemcide de?il sunucuda yapmal?d?r.
  • Komut dosyalar? se?ici olarak devre d??? b?rak?labilir, bu nedenle bir g?rüntüyü kaydetmek i?in sa? t?klamak gibi i?lemleri ?nlemek i?in JavaScript'e güvenilemez.[75]
  • Bir sald?rgan taraf?ndan ay?klanabilece?inden, ?ifreler gibi hassas bilgileri JavaScript'e g?mmek ?ok k?tü bir uygulama olarak kabul edilir.[76]

Geli?tiricilere duyulan yanl?? güven

[de?i?tir | kayna?? de?i?tir]

Npm ve Bower gibi paket y?netim sistemleri, JavaScript geli?tiricileri aras?nda popülerdir. Bu tür sistemler, bir geli?tiricinin, programlar?n?n di?er geli?tiricilerin program kitapl?klar?na olan ba??ml?l?klar?n? kolayca y?netmesine izin verir. Geli?tiriciler, kitapl?klar?n koruyucular?n?n onlar? güvenli ve güncel tutaca??na güvenirler, ancak bu her zaman b?yle de?ildir. Bu k?r güven nedeniyle bir güvenlik a???? ortaya ??kt?. Güvenilir kitapl?klar, kitapl?klara dayanan tüm programlarda hatalar?n veya güvenlik a??klar?n?n ortaya ??kmas?na neden olan yeni sürümlere sahip olabilir. Yani bir kitapl?k vah?i do?ada bilinen güvenlik a??klar?yla yamas?z kalabilir. 133 bin web sitesi ?rne?i incelenmi? bir ?al??mada, ara?t?rmac?lar web sitelerinin %37'sinin bilinen en az bir güvenlik a????na sahip bir kitapl?k i?erdi?ini buldu.[77] "Her web sitesinde kullan?lan en eski kütüphane sürümü ile bu kütüphanenin mevcut en yeni sürümü aras?ndaki ortalama gecikme, ALEXA'da 1.177 gündür ve halen aktif olarak kullan?lan baz? kütüphanelerin geli?tirilmesi y?llar ?nce durduruldu." [77] Ba?ka bir olas?l?k, bir kütüphanenin y?neticisinin kütüphaneyi tamamen kald?rabilmesidir. Bu, Mart 2016'da Azer Ko?ulu'nun deposunu npm'den kald?rmas?yla meydana geldi. Bu, kütüphanelerine ba?l? on binlerce program?n ve web sitesinin bozulmas?na neden oldu.[78]

Taray?c? ve eklenti kodlama hatalar?

[de?i?tir | kayna?? de?i?tir]

JavaScript, baz?lar? arabellek ta?malar? gibi kusurlara sahip olabilen ?ok ?e?itli taray?c? yetenekleri i?in bir arabirim sa?lar. Bu kusurlar, sald?rganlar?n kullan?c?n?n sisteminde istedikleri herhangi bir kodu ?al??t?racak komut dosyalar? yazmas?na izin verebilir. Bu kod hi?bir ?ekilde ba?ka bir JavaScript uygulamas?yla s?n?rl? de?ildir. ?rne?in, arabellek ta?mas? istismar?, bir sald?rgan?n süper kullan?c? ayr?cal?klar?yla i?letim sisteminin API'sine eri?mesine izin verebilir.

Bu kusurlar Firefox, Internet Explorer,[79] ve Safari gibi büyük taray?c?lar? etkilemi?tir.

Video oynat?c?lar, Adobe Flash ve Microsoft Internet Explorer'da varsay?lan olarak etkinle?tirilen ?ok ?e?itli ActiveX denetimleri gibi eklentiler, JavaScript arac?l???yla yararlan?labilen kusurlara da sahip olabilir (bu tür kusurlardan ge?mi?te yararlan?lm??t?r).

Windows Vista'da Microsoft, Internet Explorer i?lemini s?n?rl? ayr?cal?klarla ?al??t?rarak arabellek ta?malar? gibi hata risklerini kontrol alt?na almaya ?al??m??t?r.[80] Google Chrome benzer ?ekilde sayfa olu?turucular?n? kendi " sandbox "lar?yla s?n?rlar.

Korumal? alan uygulama hatalar?

[de?i?tir | kayna?? de?i?tir]

Web taray?c?lar?, ?rne?in dosya olu?turmak veya silmek i?in gerekli ayr?cal?klarla birlikte JavaScript'i sanal alan?n d???nda ?al??t?rabilir. Bu tür ayr?cal?klar?n Web'den koda verilmesi ama?lanmam??t?r.

Web'den JavaScript'e yanl?? ayr?cal?klar verilmesi, hem Internet Explorer hem de Firefox'taki güvenlik a??klar?nda rol oynam??t?r. Windows XP Service Pack 2'de Microsoft, Internet Explorer'da JScript'in ayr?cal?klar?n? dü?ürmü?tür.[81]

Microsoft Windows, bir bilgisayar?n sabit sürücüsündeki JavaScript kaynak dosyalar?n?n genel ama?l?, korumal? alanda olmayan programlar olarak ba?lat?lmas?na izin verir (bkz: Windows Komut Dosyas? Ana Bilgisayar? ). Bu, JavaScript'i ( VBScript gibi) bir Truva at? i?in teorik olarak uygun bir vekt?r yapar, ancak JavaScript Truva atlar? pratikte nadirdir.[82]

Donan?m a??klar?

[de?i?tir | kayna?? de?i?tir]

2015 y?l?nda, güvenlik ara?t?rmac?lar? taraf?ndan bir makalede, bir Rowhammer sald?r?s?n?n JavaScript tabanl? bir kavram kan?t? uygulamas? a??klanm??t?r.[83][84][85]

2017 y?l?nda, taray?c? üzerinden JavaScript tabanl? bir sald?r?n?n ASLR'yi atlayabilece?i g?sterildi. Buna "ASLR⊕Cache" veya AnC denir.

2018'de Intel ve di?er i?lemcilerde Spekülatif Yürütmeye kar?? Spectre sald?r?lar?n? a??klayan makale bir JavaScript uygulamas?n? i?eriyordu.

Geli?tirme ara?lar?

[de?i?tir | kayna?? de?i?tir]

?nemli ara?lar dil ile birlikte geli?mi?tir.

?lgili teknolojiler

[de?i?tir | kayna?? de?i?tir]
Brendan Eich, ?zellikle JavaScript programlama dilinin yarat?c?s? olarak tan?nan Amerikal? bir yaz?l?m geli?tiricisidir. Eich, 1995 y?l?nda Netscape Communications Corporation'da ?al???rken JavaScript'i geli?tirmi?tir.

Yayg?n bir yan?lg?, JavaScript'in Java ile ayn? oldu?una y?neliktir. Her ikisinin de ger?ekten de C-benzeri bir s?zdizimi vard?r (C dili onlar?n en yak?n ortak ata dilidir). Ayr?ca, genellikle korumal? alana al?n?rlar (bir taray?c? i?inde kullan?ld???nda) ve JavaScript, Java'n?n s?zdizimi ve standart kitapl??? g?z ?nünde bulundurularak tasarlanm??t?r. ?zellikle, tüm Java anahtar s?zcükleri orijinal JavaScript'te ayr?lm??t?r, JavaScript'in standart kitapl??? Java'n?n adland?rma kurallar?n? takip eder ve JavaScript'in ?Math? ve ?Date? objeleri Java 1.0'dan al?nan s?n?flara dayan?r.[88]

Java ve JavaScript ilk olarak 1995'te ortaya ??kt?, ancak Java Sun Microsystems'den James Gosling ve JavaScript ise Netscape Communications'dan Brendan Eich taraf?ndan geli?tirildi.

?ki dil aras?ndaki farkl?l?klar benzerliklerinden daha belirgindir. Java'n?n statik yaz?m? vard?r, JavaScript'in yaz?m? ise dinamiktir. Java, derlenmi? bayt kodundan yüklenirken JavaScript, insan taraf?ndan okunabilir kaynak kodu olarak yüklenir. Java'n?n objeleri s?n?f tabanl?d?r, JavaScript'ler ise prototip tabanl?d?r. Son olarak, Java, Java 8'e kadar i?levsel programlamay? desteklemezken, JavaScript, Scheme'den etkilenerek bunu ba??ndan beri yapm??t?r.

JSON veya JavaScript Object Notation, JavaScript'in obje de?i?mez s?zdiziminin bir alt kümesi olarak tan?mlanan genel ama?l? bir veri de?i?im bi?imidir.

TypeScript (TS), Microsoft taraf?ndan geli?tirilmekte ve desteklenmektedir.[89] TS, JavaScript'in kat? ?ekilde (strictly-typed) yaz?lan versiyonudur. TS, de?i?kenlere ve fonksiyonlara, tür a??klamalar? ekleyerek farkl?l?klar? g?sterir ve JS i?inde türlerin tan?mlanmas? i?in bir tan?t?m dilidir. Bunun d???nda TS, JS ile istemci taraf?nda ?al??t?r?lmas?, kolay, anla??l?r bir ?ekilde aktar?lmas?na izin vermek ve di?er JS kodlar?yla birlikte ?al??abilmesi i?in hemen hemen ayn? ?zellik setini payla??r.[90]

WebAssembly

[de?i?tir | kayna?? de?i?tir]

2017'den beri web taray?c?lar?, bir JavaScript motorunun web sayfas? komut dosyalar?n?n performans a??s?ndan kritik b?lümlerini yerel h?za yak?n yürütmesini sa?layan ikili bir bi?im olan WebAssembly'yi desteklemektedir.[91] WebAssembly kodu, normal JavaScript koduyla ayn? sanal alanda ?al???r.

asm.js, WebAssembly'nin ?ncüsü olarak hizmet veren bir JavaScript alt kümesidir.[92]

Aktar?c?lar (Transpilers)

[de?i?tir | kayna?? de?i?tir]

JavaScript, Web'in bask?n istemci taraf? dilidir ve bir?ok web sitesi komut dosyas? a??rl?kl?d?r. Bu nedenle, geli?tirme sürecine yard?mc? olabilecek di?er dillerde yaz?lm?? kodu d?nü?türmek i?in aktar?c?lar olu?turulmu?tur.[36]

  1. ^ Press release announcing JavaScript, "Netscape and Sun announce JavaScript", PR Newswire, December 4, 1995
  2. ^ "ECMAScript? 2024 Language Specification". Haziran 2024. Eri?im tarihi: 30 A?ustos 2024. 
  3. ^ "ECMAScript? 2025 Language Specification". 27 Mart 2024. Eri?im tarihi: 17 Nisan 2024. 
  4. ^ Seibel, Peter (16 Eylül 2009). Coders at Work: Reflections on the Craft of Programming. ISBN 9781430219484. 24 Aral?k 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 25 Aral?k 2018. Eich: The immediate concern at Netscape was it must look like Java. 
  5. ^ a b c d e "Chapter 4. How JavaScript Was Created". speakingjs.com. 27 ?ubat 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 21 Kas?m 2017. 
  6. ^ "Popularity – Brendan Eich". 3 Temmuz 2011 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 18 Mart 2022. 
  7. ^ "Brendan Eich: An Introduction to JavaScript, JSConf 2010". YouTube. s. 22m. 29 A?ustos 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 25 Kas?m 2019. Eich: "function", eight letters, I was influenced by AWK. 
  8. ^ Eich, Brendan (1998). "Foreword". Goodman, Danny (Ed.). JavaScript Bible (3. bas.). John Wiley & Sons. ISBN 0-7645-3188-3. LCCN 97078208. OCLC 38888873. OL 712205M. 
  9. ^ "nodejs/node-eps". GitHub. 29 A?ustos 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 5 Temmuz 2018. 
  10. ^ "JavaScript". dictionary.com. 9 A?ustos 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 9 A?ustos 2021. 
  11. ^ JavaScript: the definitive guide (?ngilizce). Beijing; Farnham: O'Reilly. 18 Nisan 2011. s. 1. ISBN 978-1-4493-9385-4. OCLC 686709345. 14 ?ubat 2022 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 18 Mart 2022. JavaScript is part of the triad of technologies that all Web developers must learn: HTML to specify the content of web pages, CSS to specify the presentation of web pages, and JavaScript to specify the behavior of web pages. 
  12. ^ a b "Usage statistics of JavaScript as client-side programming language on websites". w3techs.com. 13 A?ustos 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 9 Nisan 2021. 
  13. ^ a b c d "Usage statistics of JavaScript libraries for websites". w3techs.com. 23 Eylül 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 9 Nisan 2021. 
  14. ^ "ECMAScript? 2020 Language Specification". 8 May?s 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2020. 
  15. ^ "Bloomberg Game Changers: Marc Andreessen". Bloomberg. 17 Mart 2011. 16 May?s 2012 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 7 Aral?k 2011. 
  16. ^ "The Evolution of the Web Browsers". Monmouth Web Developers. 31 A?ustos 2018. 31 A?ustos 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 31 A?ustos 2018. 
  17. ^ "Learn the History of Web Browsers". washingtonindependent.com. 31 A?ustos 2018. 3 Aral?k 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 31 A?ustos 2018. 
  18. ^ "TechVision: Innovators of the Net: Brendan Eich and JavaScript". 8 ?ubat 2008 tarihinde kayna??ndan ar?ivlendi. 
  19. ^ Brendan Eich – CEO of Brave, 17 Haziran 2016, 10 ?ubat 2019 tarihinde kayna??ndan ar?ivlendi7 ?ubat 2018 
  20. ^ a b "Chapter 5. Standardization: ECMAScript". speakingjs.com. 1 Kas?m 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 1 Kas?m 2021. 
  21. ^ a b "JavaScript, How Did We Get Here?". archive.oreilly.com. 6 Nisan 2001. 19 Temmuz 2016 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 16 Temmuz 2016. 
  22. ^ "Microsoft Internet Explorer 3.0 Beta Now Available". news.microsoft.com. Microsoft. 29 May?s 1996. 24 Kas?m 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 16 Temmuz 2016. 
  23. ^ "The Unwelcome Return of "Best Viewed with Internet Explorer"". technologizer.com. 16 Eylül 2010. 23 Haziran 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 16 Temmuz 2016. 
  24. ^ Baker (24 Kas?m 2004). "Mozilla Firefox Internet Browser Market Share Gains to 7.4%". Search Engine Journal. 7 May?s 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2021. 
  25. ^ Weber (9 May?s 2005). "The assault on software giant Microsoft". BBC News. 25 Eylül 2017 tarihinde kayna??ndan ar?ivlendi. 
  26. ^ "Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome". PC Games Hardware. Computec Media AG. 3 Temmuz 2009. 1 May?s 2012 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 28 Haziran 2010. 
  27. ^ "Lifehacker Speed Tests: Safari 4, Chrome 2". Lifehacker. 11 Haziran 2009. 14 Nisan 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2021. 
  28. ^ "TraceMonkey: JavaScript Lightspeed, Brendan Eich's Blog". 4 Aral?k 2015 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 22 Temmuz 2020. 
  29. ^ "Mozilla asks, 'Are we fast yet?'". Wired. 22 Haziran 2018 tarihinde kayna??ndan ar?ivlendi18 Ocak 2019. 
  30. ^ "ECMAScript 6: New Features: Overview and Comparison". es6-features.org. 18 Mart 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 19 Mart 2018. 
  31. ^ "The secret history behind the success of npm and Node". TheServerSide. 19 Temmuz 2018. 2 A?ustos 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 2 A?ustos 2021. 
  32. ^ "State of the Union: npm". Linux.com. 13 Ocak 2017. 2 A?ustos 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 2 A?ustos 2021. 
  33. ^ a b "JavaScript Standard Moves to Yearly Release Schedule; Here is What's New for ES16". The New Stack. 4 May?s 2016. 16 Ocak 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 15 Ocak 2021. 
  34. ^ "The TC39 Process". tc39.es. Ecma International. 7 ?ubat 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 15 Ocak 2021. 
  35. ^ "ECMAScript proposals". TC39. 4 Aral?k 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 15 Ocak 2021. 
  36. ^ a b "List of languages that compile to JS". GitHub. 31 Ocak 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 6 ?ubat 2020. 
  37. ^ "U.S. Trademark Serial No. 75026640". United States Patent and Trademark Office. 13 Temmuz 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2021. 
  38. ^ "Legal Notices". Oracle Corporation. 5 Haziran 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2021. 
  39. ^ "Vanilla JS". vanilla-js.com. 16 Haziran 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 17 Haziran 2020. 
  40. ^ "Server-Side JavaScript Guide". Oracle Corporation. 11 Aral?k 1998. 11 Mart 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2021. 
  41. ^ "Introducing JScript .NET". Microsoft Developer Network. Microsoft. 14 Temmuz 2000. 10 Kas?m 2017 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 10 Nisan 2018. [S]ince the 1996 introduction of JScript version 1.0 ... we've been seeing a steady increase in the usage of JScript on the server—particularly in Active Server Pages (ASP) 
  42. ^ a b "Server-Side JavaScript, Back with a Vengeance". readwrite.com. 17 Aral?k 2009. 17 Haziran 2016 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 16 Temmuz 2016. 
  43. ^ "JavaScript for Acrobat". 7 A?ustos 2009 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 18 A?ustos 2009. 
  44. ^ "Answering the question: "How do I develop an app for GNOME?"". 11 ?ubat 2013 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 7 ?ubat 2013. 
  45. ^ "Tessel 2... Leverage all the libraries of Node.JS to create useful devices in minutes with Tessel". 26 May?s 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2021. 
  46. ^ "Node.js Raspberry Pi GPIO Introduction". 13 A?ustos 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 3 May?s 2020. 
  47. ^ "Espruino – JavaScript for Microcontrollers". 1 May?s 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 3 May?s 2020. 
  48. ^ JavaScript: The Definitive Guide: The Definitive Guide. "O'Reilly Media, Inc.". 17 A?ustos 2006. s. 16. ISBN 978-0-596-55447-7. 1 A?ustos 2020 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 29 Mart 2019. 
  49. ^ a b c d "JavaScript quirks in one image from the Internet". The DEV Community (?ngilizce). 28 Ekim 2019 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 28 Ekim 2019. 
  50. ^ "Wat". destroyallsoftware.com. 28 Ekim 2019 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 28 Ekim 2019. 
  51. ^ "JavaScript data types and data structures – JavaScript | MDN". developer.mozilla.org. 16 ?ubat 2017. 14 Mart 2017 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 24 ?ubat 2017. 
  52. ^ a b Flanagan 2006.
  53. ^ "Inheritance and the prototype chain". Mozilla Developer Network. Mozilla. 25 Nisan 2013 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 6 Nisan 2013. 
  54. ^ Effective JavaScript. Addison-Wesley. 2013. s. 83. ISBN 978-0-321-81218-6. 
  55. ^ Eloquent JavaScript. No Starch Press. 2011. ss. 95-97. ISBN 978-1-59327-282-1. 
  56. ^ "Understanding "Prototypes" in JavaScript". 12 A?ustos 2011. 5 Nisan 2013 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 6 Nisan 2013. 
  57. ^ Effective JavaScript. Addison-Wesley. 2013. ss. 125-127. ISBN 978-0-321-81218-6. 
  58. ^ "Function – JavaScript". MDN Web Docs (?ngilizce). 30 Ekim 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 30 Ekim 2021. 
  59. ^ "Properties of the Function Object". Es5.github.com. 28 Ocak 2013 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 26 May?s 2013. 
  60. ^ "Home | CocktailJS". cocktailjs.github.io. 4 ?ubat 2017 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 24 ?ubat 2017. 
  61. ^ "Concurrency model and Event Loop". Mozilla Developer Network. 5 Eylül 2015 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 28 A?ustos 2015. 
  62. ^ Eloquent JavaScript. No Starch Press. 2011. ss. 139-149. ISBN 978-1-59327-282-1. 
  63. ^ "E4X – Archive of obsolete content | MDN". Mozilla Developer Network. Mozilla Foundation. 14 ?ubat 2014. 24 Temmuz 2014 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 13 Temmuz 2014. 
  64. ^ "var – JavaScript – MDN". The Mozilla Developer Network. 23 Aral?k 2012 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 22 Aral?k 2012. 
  65. ^ "let". MDN web docs. Mozilla. 28 May?s 2019 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 27 Haziran 2018. 
  66. ^ "const". MDN web docs. Mozilla. 28 Haziran 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 27 Haziran 2018. 
  67. ^ "ECMAScript Language Specification – ECMA-262 Edition 5.1". Ecma International. 26 Kas?m 2012 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 22 Aral?k 2012. 
  68. ^ "console". Mozilla Developer Network. Mozilla. 28 ?ubat 2013 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 6 Nisan 2013. 
  69. ^ "arguments". Mozilla Developer Network. Mozilla. 13 Nisan 2013 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 6 Nisan 2013. 
  70. ^ "Import & Export Modules in javascript". learnersbucket.com. 23 Nisan 2019 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 23 Nisan 2019. 
  71. ^ "Making JavaScript Safe for Advertising". ADsafe. 6 Temmuz 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 8 May?s 2021. 
  72. ^ "Secure ECMA Script (SES)". 15 May?s 2013 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 26 May?s 2013. 
  73. ^ "Google Caja Project". Google. 22 Ocak 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 9 Temmuz 2021. 
  74. ^ "Mozilla Cross-Site Scripting Vulnerability Reported and Fixed – MozillaZine Talkback". mozillazine.org. 22 A?ustos 2011 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 24 ?ubat 2017. 
  75. ^ "Right-click "protection"? Forget about it". 17 Haziran 2008. ISSN 1797-1993. 9 A?ustos 2011 tarihinde kayna??ndan ar?ivlendi17 Haziran 2008. 
  76. ^ "Why You Should Never Put Sensitive Data in Your JavaScript". ServiceObjects Blog. ServiceObjects. 3 Haziran 2019 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 3 Haziran 2019. 
  77. ^ a b "Thou Shalt Not Depend on Me: Analysing the Use of Outdated JavaScript Libraries on the Web" (PDF). Proceedings 2017 Network and Distributed System Security Symposium. 21 Aral?k 2016. doi:10.14722/ndss.2017.23414. ISBN 978-1-891562-46-4. 29 Mart 2017 tarihinde kayna??ndan (PDF) ar?ivlendi. Eri?im tarihi: 22 ?ubat 2017. 
  78. ^ Collins (27 Mart 2016). "How one programmer broke the internet by deleting a tiny piece of code". Quartz. 22 ?ubat 2017 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 22 ?ubat 2017. 
  79. ^ "Buffer-overflow bug in IE". CNET. 19 A?ustos 1998. 25 Aral?k 2002 tarihinde kayna??ndan ar?ivlendi. 
  80. ^ "Protected Mode in Vista IE7 – IEBlog". blogs.msdn.com. 9 ?ubat 2006. 23 Ocak 2010 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 24 ?ubat 2017. 
  81. ^ "Part 5: Enhanced Browsing Security". Microsoft Docs. Changes to Functionality in Windows XP Service Pack 2. 9 A?ustos 2004. 20 Ekim 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 20 Ekim 2021. 
  82. ^ For one example of a rare JavaScript Trojan Horse, see Symantec Corporation, JS. 13 Eylül 2011 tarihinde Wayback Machine sitesinde ar?ivlendi.
  83. ^ Jean-Pharuns (30 Temmuz 2015). "Rowhammer.js Is the Most Ingenious Hack I've Ever Seen". Motherboard. Vice. 27 Ocak 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 26 Ocak 2018. 
  84. ^ "DRAM 'Bitflipping' exploit for attacking PCs: Just add JavaScript". Ars Technica. 4 A?ustos 2015. 27 Ocak 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 26 Ocak 2018. 
  85. ^ "Rowhammer security exploit: Why a new security attack is truly terrifying". slate.com. 28 Temmuz 2015. 30 Temmuz 2015 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 29 Temmuz 2015. 
  86. ^ "Benchmark.js". benchmarkjs.com. 19 Aral?k 2016 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 6 Kas?m 2016. 
  87. ^ "JSBEN.CH Performance Benchmarking Playground for JavaScript". jsben.ch. 27 ?ubat 2021 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 13 A?ustos 2021. 
  88. ^ "Popularity". 3 Nisan 2008. 3 Temmuz 2011 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 19 Ocak 2012. 
  89. ^ "JavaScript With Syntax For Types". typescriptlang.org (?ngilizce). 11 A?ustos 2022 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 21 Kas?m 2024. 
  90. ^ "TypeScript: JavaScript With Syntax For Types". Typescriptlang.org. 11 A?ustos 2022 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 12 A?ustos 2022. 
  91. ^ "Edge Browser Switches WebAssembly to 'On' -- Visual Studio Magazine". Visual Studio Magazine. 10 ?ubat 2018 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 9 ?ubat 2018. 
  92. ^ "frequently asked questions". asm.js. 4 Haziran 2014 tarihinde kayna??ndan ar?ivlendi. Eri?im tarihi: 13 Nisan 2014. 

D?? ba?lant?lar

[de?i?tir | kayna?? de?i?tir]
茹什么饮什么 沙参长什么样子图片 马刺是什么意思 腹膜后是什么位置 宝宝蛋白质过敏喝什么奶粉
ca125是什么检查项目 六月份适合种什么蔬菜 党群是什么意思 吃什么增强抵抗力和免疫力 什么山不能爬脑筋急转弯
有口臭是什么原因引起的 双氧奶是什么 雷锋日是什么时候 红细胞压积什么意思 梦见摘枣是什么意思
唇炎挂什么科 筋膜是什么 w代表什么意思 上山下水什么字 喜欢一个人是什么感觉
测怀孕的试纸叫什么hcv8jop9ns7r.cn 看牙齿挂什么科hcv9jop4ns4r.cn 啤酒加味精有什么作用hcv8jop1ns4r.cn 为什么暑假比寒假长hcv9jop2ns4r.cn 大蒜味是什么中毒hcv8jop9ns8r.cn
小便黄是什么原因引起的hcv9jop1ns0r.cn 转氨酶偏高是什么意思gysmod.com 白细胞wbc偏高是什么意思jingluanji.com 贪是什么意思hcv8jop1ns4r.cn 黄体酮吃了有什么副作用hcv9jop2ns3r.cn
b型血的孩子父母是什么血型hcv8jop0ns7r.cn 什么是伤官见官hcv8jop5ns1r.cn 1997年出生的属什么hcv8jop4ns4r.cn 一岁半宝宝反复发烧是什么原因hkuteam.com 小猫什么时候可以洗澡hcv9jop6ns3r.cn
印度古代叫什么hcv9jop2ns6r.cn 羊毛疔是什么病kuyehao.com 什么叫白内障hcv8jop0ns3r.cn 梨花是什么颜色的hcv9jop5ns2r.cn 痛风有什么症状hcv9jop5ns1r.cn
百度