stanford-oval/wikipedia huggingface dataset:
JavaScript
Tarihçe > Olgunluğa ulaşması

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ı.
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  ve npm dünyadaki herhangi bir paket yöneticisinden çok daha fazla modüle sahipti.
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. Dildeki olası revizyonlar, kapsamlı bir teklif süreciyle incelenir. Artık, sürüm numaraları yerine geliştiriciler, gelecek özelliklerin durumunu tek tek kontrol etmektedirler.
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.
Ticari Marka

"JavaScript" adı, Oracle Corporation'ın Amerika Birleşik Devletleri'ndeki ticari markasıdır.
Web sitesi istemci tarafı kullanımı

JavaScript, web sitelerinin % 97'sinin bu amaçla kullandığı, Web'in baskın istemci tarafı komut dosyası dilidir. Komut dosyaları HTML belgelerine gömülür veya bunlar da dâhil 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.
Web sitesi istemci tarafı kullanımı > Komut dosyasıyla yazılmış davranış örnekleri

Ajax veya WebSocket aracılığıyla sayfayı yeniden yüklemeden yeni web sayfası içeriği yükleme. Örneğin, sosyal medya kullanıcıları mevcut sayfadan ayrılmadan mesaj gönderip alabilir.
Nesneleri soldurma, yeniden boyutlandırma ve taşıma gibi web sayfası animasyonları.
Tarayıcı oyunları oynama.
Akış ortamının oynatılmasını kontrol etme.
Açılan (pop-up) reklamlar oluşturma.
Veriler bir web sunucusuna gönderilmeden önce bir web formunun giriş değerlerinin doğrulanması.
Kullanıcının davranışıyla ilgili verilerin günlüğe kaydedilmesi ve ardından bir sunucuya gönderilmesi. Web sitesi sahibi bu verileri analiz, reklam takibi ve kişiselleştirme için kullanabilir.
Bir kullanıcıyı başka bir sayfaya yönlendirme.
Web sitesi istemci tarafı kullanımı > Kitaplıklar ve çerçeveler

Web sitelerinin %80'inden fazlası, istemci tarafı komut dosyası oluşturma için bir üçüncü taraf JavaScript kitaplığı veya web çerçevesi kullanırlar.
jQuery, web sitelerinin %75'inden fazlası tarafından kullanılan açık ara en popüler kitaplıktır. Facebook, web sitesi için React kitaplığını oluşturdu ve daha sonra bunu açık kaynak olarak yayınladı; Twitter dâhil diğer pek çok site günümüzde bunu kullanmaktadır. Aynı şekilde Google'ın YouTube ve Gmail'i de dâhil 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.
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.
Diğer kullanımları

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  idi, ancak bunlar küçük özelliklerdi. 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ı.
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  ve JavaScript ile yazılmış GNOME Shell uzantılarını içerir.
JavaScript, son zamanlarda bazı gömülü sistemlerde, genellikle Node.js'den yararlanılarak görünmeye başladı.
Özellikler

Aşağıdaki özellikler, aksi açıkça belirtilmediği sürece, uyumlu tüm ECMAScript uygulamaları için ortaktır.
Özellikler > Zorunlu ve yapılandırılmış

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.
Özellikler > Zayıf yazılmış

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.
İ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:
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. Ö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.
| 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.
Özellikler > Nesne (Obje) yönelimi (prototip tabanlı)

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.
Özellikler > Fonksiyonel

Bir fonksiyon birinci sınıftır ; bir fonksiyon bir obje olarak kabul edilir. Bu nedenle, bir fonksiyonun .call() ve .bind() gibi özellikleri ve metotları olabilir. İç 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 dâhil), dış işlevin yürütülmesi sona erdikten sonra bile, her bir iç fonksiyon objesinin iç durumunun bir parçası haline gelir. .  JavaScript ayrıca anonim işlevleri de destekler.
Özellikler > Yetkilendirme

JavaScript, örtük ve açık yetkilendirmeyi destekler.
Özellikler > Çeşitli

JS sıfır indeksli bir dildir.
Özellikler > Standart olmayan özellikler

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  den beri Firefox'ta desteklenmemektedir)
Sözdizimi

Ayrıca bakınız: Tarayıcı güvenliği
Güvenlik

Ayrıca bakınız: ECMAScript § External_links
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. Closure Toolkit, üçüncü taraf JavaScript ve HTML'nin güvenli bir şekilde yerleştirilmesi ve yalıtılması için başka bir projedir.
İç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.
Güvenlik > Siteler arası güvenlik açıkları

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.
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.
Güvenlik > Müşteriye duyulan yanlış güven

İ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.
Bir saldırgan tarafından ayıklanabileceğinden, şifreler gibi hassas bilgileri JavaScript'e gömmek çok kötü bir uygulama olarak kabul edilir.
Güvenlik > Geliştiricilere duyulan yanlış güven

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. "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."  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.
Güvenlik > Tarayıcı ve eklenti kodlama hataları

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, 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. Google Chrome benzer şekilde sayfa oluşturucularını kendi " sandbox "larıyla sınırlar.
Güvenlik > Korumalı alan uygulama hataları

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.
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.
Güvenlik > Donanım açıkları

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.
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ı

Önemli araçlar dil ile birlikte gelişmiştir.
Her büyük web tarayıcısında, JavaScript hata ayıklayıcı dâhil olmak üzere yerleşik web geliştirme araçları bulunur.
ESLint ve JSLint gibi statik program analiz araçları, bir dizi standart ve yönergeye uygunluk için JavaScript kodunu tarar.
Bazı tarayıcılarda yerleşik profil oluşturucular bulunur. Benchmark.js ve jsbench gibi bağımsız profil oluşturma kitaplıkları da oluşturulmuştur.
Birçok metin düzenleyici (IDE), JavaScript kodu için sözdizimi vurgulama desteğine sahiptir.
İlgili teknolojiler > Java

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.
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.
İlgili teknolojiler > JSON

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.
İlgili teknolojiler > TypeScript

TypeScript (TS), Microsoft tarafından geliştirilmekte ve desteklenmektedir. 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.
İlgili teknolojiler > WebAssembly

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. WebAssembly kodu, normal JavaScript koduyla aynı sanal alanda çalışır.
asm.js, WebAssembly'nin öncüsü olarak hizmet veren bir JavaScript alt kümesidir.
İlgili teknolojiler > Aktarıcılar (Transpilers)

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.
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.
Vasabi

Vasabi (Wasabia japonica ya da Eutrema japonica),
 Turpgiller familyasına üye bir bitkidir. Japon turpu olarak da isimlendirilmesine  karşın, bu familyanın turp türüne ait değildir. Kökü, içerdiği yoğun ve kuvvetli tat ve acı yüzünden yemeklerde çeşni olarak kullanılır. Acılığı, acı biberlerdeki kapsaisinin dilde neden olduğu acıdan daha çok, hardalın burun ve solunum yollarında yarattığı acı hissine yakındır. Japonya'daki vadi nehir yataklarında doğal olarak yetişir. Wasabi Japonica'dan başka, Wasabi Koreana ve Wasabi Tetsuigi türleri de vardır. Yiyecek piyasasında genellikle iki kültivarı, Wasabi Japonica 'Drauma' ve 'Mazuma' bulunur; ancak tüm çeşitliliği bu ikisiyle sınırlı değildir.
Kullanım

Vasabi, sonradan çok ince rendelenmek üzere ham kök haliyle veya kullanıma hazır, dişmacunu tüpüne benzeyen tüpler içerisinde satılır. Lokantalarda, macun hali müşterinin siparişi üzerine hazırlanır; 15 dakika içerisinde aromasını yitirir. Suşi hazırlanırken, vasabi'yi pilav ve diğer malzemelerin arasına koyar; bu şekilde vasabi tadını daha uzun süre koruyabilir.
Taze vasabi yaprakları yenebilir, köklerindeki tat yapraklarında da mevcuttur.
Vasabi'nin acı yaratması yağ bazlı olmadığından, acı biberlerin yarattığı histen daha kısa sürelidir ve herhangi bir yiyecek veya içecek tüketimiyle kolaylıkla silinir. Acı, ilk olarak burun deliklerinde ve solunum yollarında yoğun olarak hissedilir ve alınan miktara bağlı olarak oldukça yüksek şiddette acı verebilir.
Vasabi buharının solunum yollarıyla alınması kuvvetli uyarıcı bir etki yaratır. Bu özelliği, duyma engelli kişilerin yangın ve benzeri tehlikeli durumlarda uyarılması amacıyla kullanılabilir. Böylesi bir deneyde, deneklerden bir tanesinin uykusundan on saniye içerisinde uyandığı tespit edilmiştir. Bu yönde yapılan çalışmalar, nihayetinde Makoto Imai, Naoki Urushihata, Hideki Tanemura, Yukinobu Tajima, Hideaki Goto, Koichiro Mizoguchi ve Junichi Murakami'ye 2011 yılı Nobel Kimya ödülü kazandırmıştır.
Gerçek vasabi ve taklit vasabi

Hasadı zor olduğu için, gerçek vasabinin fiyatı yüksektir. Bu yüksek fiyat nedeniyle yaban turpu (acırga), hardal, nişasta ve yeşil gıda boyası karışımı ile taklidi sıklıkla kullanılır. Japonya dışında gerçek vasabi bitkisini bulmak zordur. Piyasada var olan kimi ürünlerin paketinde vasabi yazsa dahi, içeriği gerçek vasabi bitkisi içermeyebilir. Taklidinin tadı vasabi ve yaban turpu arasında olsa dahi fark kolaylıkla ayırt edilebilir. Taklit vasabi Japonya'da bulunmaktadır ancak seiyo wasabi (batı wasabisi) olarak adlandırılır.