Olası Uyumluluk Etkisiyle ECMAScript 2015'teki Düzeltmeler ve Açıklamalar
9.1.1.4.14-9.1.1.4.17 Sürüm 5 ve 5.1, yeni bir küresel bildirime karşılık gelen bir global nesne (global object) özelliğinin zaten mevcut olup olmadığını belirlemek için bir özellik varlığı testi kullanmıştır. ECMAScript 2015, bir kendi özelliği varlığı testi (own property existence test) kullanır. Bu durum, web tarayıcıları tarafından en yaygın şekilde gerçekleştirilen davranışa karşılık gelir.
10.4.2.1: 5. Sürüm, geçerli dizi uzunluğunun yakalanmasını, dizi indeksinin (array index) veya yeni uzunluk değerinin tamsayı (integer) dönüşümünden öncesine taşımıştı. Ancak, dönüşüm işleminin dizi uzunluğunu değiştirme gibi bir yan etkisi olursa, yakalanan uzunluk değeri geçersiz hale gelebilirdi. ECMAScript 2015, geçerli dizi uzunluğunun bu tür olası yan etkilerin gerçekleşmesinden sonra yakalanması gerektiğini belirtir.
21.4.1.31: Önceki sürümler, TimeClip soyut işleminin bir 0 zaman değerinin (time value) temsili olarak +0𝔽 veya -0𝔽 döndürmesine izin veriyordu. ECMAScript 2015, her zaman +0𝔽 döndürüldüğünü belirtir. Bu, ECMAScript 2015 için bir Date nesnesinin zaman değerinin (time value) hiçbir zaman gözlemlenebilir şekilde -0𝔽 olmadığı ve zaman değerlerini (time values) döndüren yöntemlerin asla -0𝔽 döndürmediği anlamına gelir.
21.4.1.32: Eğer bir UTC zaman farkı (UTC offset) temsili yoksa, yerel saat dilimi kullanılır. Sürüm 5.1, eksik bir saat diliminin "z" olarak yorumlanması gerektiğini hatalı bir şekilde belirtmişti.
21.4.4.36: Eğer yıl 21.4.1.32 içinde belirtilen Tarih Saat Dizgesi Biçimi (Date Time String Format) kullanılarak temsil edilemiyorsa, bir RangeError istisnası fırlatılır. Önceki sürümler bu durum için davranışı belirtmemişti.
21.4.4.41: Önceki sürümler, zaman değeri (time value) NaN olduğunda Date.prototype.toString tarafından döndürülen değeri belirtmemişti. ECMAScript 2015, sonucun "Invalid Date" Dize değeri olacağını belirtir.
22.2.4.1, 22.2.6.13.1: Bir RegExp örneğinin "source" özelliğinin değerindeki herhangi bir LineTerminator kod noktası, bir kaçış dizisi (escape sequence) kullanılarak ifade edilmelidir. Sürüm 5.1 yalnızca / karakterinin kaçış karakteriyle yazılmasını gerektiriyordu.
22.2.6.8, 22.2.6.11: Önceki sürümlerde, String.prototype.match ve String.prototype.replace belirtimleri, desen (pattern) argümanının global bayrağı ayarlanmış bir RegExp değeri olduğu durumlar için hatalıydı. Önceki belirtimler, deseni eşleştirmeye yönelik her teşebbüs için eğer lastIndex değişmediyse, bunun 1 artırılması gerektiğini ifade ediyordu. Doğru davranış, lastIndex'in yalnızca desen boş dizeyle (empty String) eşleştiğinde 1 artırılması gerektiğidir.
23.1.3.30: Önceki sürümler, bir comparator tarafından döndürülen NaN değerinin Array.prototype.sort tarafından nasıl yorumlanacağını belirtmemişti. ECMAScript 2015, bu tür bir değerin, comparator'dan +0𝔽 döndürülmüş gibi işlem göreceğini belirtir. ECMAScript 2015 ayrıca, bir comparator tarafından döndürülen sonuca ToNumber uygulandığını belirtir. Önceki sürümlerde, bir comparator sonucunun bir Sayı olmadığı (is not a Number) durumdaki etkisi [gerçekleştirim tanımlıydı (implementation-defined)]. Pratikte gerçekleştirimler ToNumber soyut işlemini çağırır.