Bu kod satırı bir ifadeyi değerlendirir ve sonra döndürülen değere dayalı bir yöntemi çağırır.
İfade ('b' + 'a' + + 'a' + 'a')
, yalnızca dizgi değişmezleri ve toplama operatörlerinden oluşur.
- Dize Değişmezleri "Dize değişmezi, tek veya çift tırnak içine alınmış sıfır veya daha fazla karakterdir."
- Toplama işleci (+) "Toplama işleci dize birleştirme veya sayısal toplama gerçekleştirir."
Örtük bir eylem, bir dizgideki ToNumber çağrısıdır
- Dize Türüne Uygulanan ToNumber "Dizelere uygulanan ToNumber , Dize girişine dilbilgisi uygular. Dilbilgisi String'i StringNumericLiteral'ın bir genişletmesi olarak yorumlayamazsa, ToNumber sonucu NaN olur."
Tercüman, ifadeyi sol ve sağ ifadelerin bileşenlerine ayırarak ayrıştırma kurallarına sahiptir.
Aşama 1: 'b' + 'a'
Sol İfade: 'b'
Sol Değer: 'b'
Operatör: + (ifade taraflarından biri bir dizedir, bu nedenle dize birleştirme)
Doğru İfade: 'a'
Doğru Değer: 'a'
Sonuç: 'ba'
Adım 2: 'ba' + + 'a'
Sol İfade: 'ba'
Sol Değer: 'ba'
Operatör: + (ifade taraflarından biri bir dizedir, bu nedenle dize birleştirme)
Doğru İfade: + 'a'
(bu, 'a' karakterinin Matematik Değerini değerlendirir ve + işaretinden pozitif bir sayı olduğunu varsayar; eksi işareti burada da negatif bir sayıyı gösteren NaN ile sonuçlanacak şekilde çalışırdı)
Doğru Değer: NaN (operatör dize birleştirme olduğundan, birleştirme sırasında bu değer üzerinde toString çağrılır)
Sonuç: 'baNaN'
Aşama 3: 'baNaN' + 'a'
Sol İfade: 'baNaN'
Sol Değer: 'baNaN'
Operatör: + (ifade taraflarından biri bir dizedir, bu nedenle dize birleştirme)
Doğru İfade: 'a'
Doğru Değer: 'a'
Sonuç: 'baNaNa'
Bundan sonra gruplama ifadesi değerlendirildi ve toLowerCase çağrıldı, bu da bizi muzla bıraktı.
+"a"
öyleNaN
.