JavaScript nedir, gerçekten mi?


95

Bütün bunlar web sayfamı W3C HTML Validator gibi JavaScript uygunluğunu test etmenin bir yolunu ararken başladı . Henüz bir tane bulamadım. Bu yüzden eğer biliyorsan haberim olsun ...

  1. Resmi JavaScript sayfasını aradım ve ECMA Komut Dosyası'nı buldum . Bu insanlar bir betik dilini standardize etti (artık JavaScript olarak adlandırmak istemiyorum!) Ve ECMA-262 ( Wikipedia ) adını verdi . En son çalışmaları Edition 5.1.

  2. JavaScript Mozilla Corporation tarafından geliştirilmiştir ve ECMA'nın 5.1 sürümüne dayanan son kararlı sürümü 1.8.5'dir (buna bakın ).

  3. Bağlantılı Wikipedia sayfası lehçelerden bahseder. Mozilla'nın JavaScript 1.8.5'i JScript 9 (IE) ve JavaScript (Chrome'un V8 [ Wiki ]) ve daha birçoğunun lehçesi olarak listelenmiştir . JavaScript 1.8.5'in ECMA- 262'nin bir türevi olduğunu ve SpiderMonkey'in [ Wiki ] çalışan bir motor olduğunu anlayabiliyor muyum ? Ve Chrome'un kendi lehçesi var ve onu çalıştıran program V8 motoru mu?

ECMA-262'ye dayanan tüm bu lehçelerde, artık anlayamadığım şey " JavaScript nedir "? Gerçekten herhangi bir çapraz tarayıcı komut dosyası dili var mı? Çeşitli uygulayıcılar lehçenin çapraz uyumu konusunda hemfikir olmak için bir araya geliyor mu? Bu çaba ECMA mı?


10
Javascript dediğiniz şeyle ilgisi olmayan bir ECMA lehçesi olan ActionScript'ten bahsetmeyi unuttunuz.
DaveRandom

4
Uygunluk için çok fazla değil (zaten vurguladığınız gibi), ancak jslint kodu kontrol etmek için oldukça hoş.
SomeKittens

2
@MadaraUchiha - Kabul ediyorum "sadece jQuery kullanın. Her şey yoluna girecek." iyi olmayacak. Bu yüzden bunu araştırmaya başladım. Sitem bharath.lohray.com ya hataları oluşturmaz Chrome ve Firefox ve W3C doğrulayıcı üzerinde iyi çalışır, ancak yeni IE üzerinde büyük zaman emmek! Dahası, anybrowser.org/campaign'daki millet fikrini sevdiğim kadar , gerçekten çapraz tarayıcı olamam!
Lord Loh.

7
Sayfanızda, kaydırma çok can sıkıcı ve üstünde. Sadece IMO. Ve "Lord" unvanı, gerçekten bir Lord olsanız bile, cehennem gibi görkemli geliyor.
NullUserException

11
Gereksiz yere gösterişli. SE'de yukarı ve aşağı kayan yazılar görmüyorsunuz. Bu profesyonel görünümlü bir web sitesi olması gerekiyorsa ve hala geçişler istiyorsanız, açık / kapalı gibi daha gizli bir şey kullanın.
NullUserException

Yanıtlar:


96

Hemen hemen tüm olgun diller bir belirtim tarafından tanımlanır ve derleyiciler veya tercümanlar bu belirtimde tanımlanan standarda uymaya çalışır. Ancak, standart dilin yazarı tarafından tanımlanmadıkça, nadiren başarılı olurlar.

Sen bulabilirsiniz C ++ 2003 standardını , C # 4 şartname , Java 7 şartname ve daha birçok çevrimiçi. Bunların çoğu ECMA veya ISO standardizasyon numaralarına sahiptir. Bunlar sadece bir standart kaydedebileceğiniz ve daha resmi hale getirebileceğiniz kuruluşlardır.

Ruby, tarihsel olarak işleri biraz farklı şekilde yapmıştır, özellik olarak çalıştırılabilir bir test setine sahiptir . Bu yüzden, bir tercüman yazmak ve standart Ruby olarak adlandırmak istiyorsanız, tüm bu testleri geçen bir tercüman oluşturmanız gerekiyordu. Fakat sonunda Ruby'nin bile daha resmi bir şartname haline gelmesi muhtemel .

Javascript, muhtemelen evrimleşmiş olması dışında, farklı değildir.

Javascript ilk olarak Netscape tarafından oluşturuldu. LiveScript olarak adlandırdılar, ancak Java'ya benziyorlardı ve Sun ile hem Netscape hem de Java pazarlamasından yararlanan bir anlaşma yaptılar. Microsoft, VBScript'e sahipti ve (muhtemelen varsaymakla kaybettiği için) temelde Javascript'i kopyaladı, ancak adı Sun'a aitti, bu yüzden cheekily buna JScript adını verdi.

Ancak JScript, sözdiziminde Javascript'e çok benzer olmakla birlikte, COM'dan çok yararlandı; örneğin, IE5 ve 6, kullanarak bir XMLHttpRequest nesnesini başlattı new ActiveXObject("Microsoft.XMLHTTP");.

Ve böylece, paralel, benzer ama aynı zamanda Javascript'in farklı "lehçeleri" doğdu. Zamanla, IE’den daha az pazar payına sahip tarayıcılara sahip çeşitli gruplar dili standartlaştırmaya çalıştı ve yıllarca Microsoft direndi. V8'e kadar.

V8 hızlıydı. Tamamen yeni bir pazar standardı belirledi. Her şeyin fakir görünmesine neden oldu.

Ve Microsoft'a karşı çeşitli antitröst davaları sayesinde, IE pazar payını kaybediyordu. Birdenbire, standardizasyonu desteklemek Microsoft’un ilgisini çekti. Henüz orada değiliz, ama doğru yolda.

Bu arada, V8 açık kaynak kodluydu ve bu da insanların Node.JS gibi hızlı bir Javascript ayrıştırıcısı için yeni kullanımlar hakkında düşünmeye başlamalarına izin verdi .

Ancak, sorunuza geri dönmek için: Javascript nedir? ECMAScript için yaygın (ve orijinal) ad, genel olarak prototipik bir dilin belirtimidir , ancak yalnızca bir broswer'daki etki alanı nesne modelinde gezinmek ve işlemek için kullanılmaz.

ECMA-262 sadece standart tanımdır, ECMA-334 gibi C # için standart tanımdır. ECMAScript, ilgili tüm tarafların ECMA-262'nin yazıldığı 99'lu yıllardan beri hemfikir oldukları tek isimdir.


7
Cevabınızı bir kereden fazla yükseltebilirsem, bunu yapardım :-) Bu, birkaç şeyi daha net hale getirmeye yardımcı olur. C derleyicileri benzetmesi durumu biraz anlaşılabilir kılar :-) JavaScript, ikili dosyalar için derlenmediyse ve son kullanıcılar / işlev dışı komut dosyalarını görüyorlarsa. Öyleyse, bir standarda bir sayfa oluşturamayacağımı ve tüm tarayıcılarda aynı şekilde çalışmasını umduğumu anlıyorum. (henüz işlemsel kelime olmak).
Lord Loh.

1
@LordLoh. Bu doğru. Ancak, jQuery ve Prototype gibi kütüphanelerin sizin için farklılıkları soyutlamasına izin verebilirsiniz.
pdr

Bu yazı ve araştırma, jQuery animasyonunun IE9'da çalışmadığı ve anybrowser.org kampanyası fikrini yalanladığımı ve bir standarda sadık kalmayı umduğumda başladı. HTML5 / CSS3 / JS. JS benim kaporta hata olarak sona erdi.
Lord Loh.

1
@LordLoh. JQuery'nin suçu olduğundan o kadar emin olmazdım. Sadece hızlı bir bakış HTML'nizle ilgili sorunları gösterir (örneğin, eksik alıntılar) ve Javascript'inizi bu şekilde en aza indirdiğinizde, çok doğru olmamışsanız tuhaf sonuçlar olabilir. Uzun zaman önce noktalı virgül kaçırdığım ve yalnızca büyük tarayıcılardan birinde sıkıştırıldıktan sonra başarısız olan bir sorunu hatırlıyorum. jQuery oldukça kararlı ve IE9 ile iyi çalışmalı.
pdr

5
@LordLoh. console.log senin problemin. Geliştirici araç çubuğunu açmadığınız sürece çalışmaz (ve bu nedenle "konsol" nesnesini yarat).
pdr

23

Javascript, ECMAScript'in yaygın olarak kullanılan bir uygulamasıdır. Bu Scheme ailesine çok benzer bir durum . Düzende, oldukça resmi bir şartname var. Geçerli sürüm R6RS'dir, ancak R5RS bu yayından itibaren en yaygın şekilde uygulanan standarttır. Uygulamalar, Programın yaşı ve genel felsefelerinden dolayı ECMAScript’ten daha fazla dağınıktır.

Javascript, artık hem Mozilla Firefox’un hem de Google’ın Chrome’unun pazar payındaki patlama oranındaki artış nedeniyle yaygın bir hal alıyor. Başlangıçta Mozilla tarayıcısına ve daha sonra Firefox'a (ve Scheme kalabalığına koşarsanız Iceweasel'e dönüşür) dönüşen Netscape Navigator ile bir ayak izi edindi.

Şimdi burada biraz zorlayıcı olur. Javascript’in performansının çoğu, onu çalıştıran ayrıştırıcı ve motordan geliyor. Bu, tarayıcılar arasındaki gerçek farkların ortaya çıktığı yerdir. Spidermonkey, Javascript’i V8’den farklı bir şekilde çalıştırır. Javascript, üzerinde çalışılmış olmasına rağmen, tamamen ortak bir kütüphanenin bulunmaması gibi pürüzlü noktalara sahiptir.

Eğer Javascript C ++ olsaydı, ECMAScript C ++ 11 olurdu, UNIX ve G ++ "standard" a en yakınken, C ++ .NET ve Objective C ++ ise Actionscript'in ECMAScript'ten çok daha uzağa uzanıyordu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.