2015-10-07 18 views
7

Ben üs alma kombinasyonu ve Javascript öncelik grubunda 14 (çarpma, bölme, vs) her şey ile ne kastedildiğini anlamakta zorlanıyorum.JavaScript operatör öncelik technicality

Source - MDN

Üç sorular:

  1. birleştirerek anlamı nedir sağdan sola ve soldan sağa çağrışımsal bir grupta?
  2. 2 ** 3 * 4 ifadesi bu kurallara göre nasıl yeniden ifade edilebilir ve hala aynı cevabı alırsınız? 4 * 2 ** 3 eser ... bu ne anlama geliyor?
  3. Ne zaman/nasıl bu, üstelleşmenin daha yüksek önceliği vermenin daha kolay bir şekilde yapılmasına eşdeğer değildir? sağdan sol taraf olmak
+0

anlamına 2 ** 3 ** 4 = Math.pow (2, Math.pow (3, 4)); –

cevap

2

1) 2 ** 3 ** 4, 2 ** (3 ** 4) olup. 2/3/4, soldan sağa ilişkilendiricidir, (2/3)/4 şeklindedir.

2/3) Ben 2 ** 3 * 4(2 ** 3) * 4 olduğuna inanıyoruz. 2 * 3 ** 4, 2 * (3 ** 4)'dir (es6fiddle tarafından değerlendirildiği üzere).

Bu tablodan takip etmez; Ancak üssüasyon çoğalma üzerinde önceliğe sahip olmalıdır. Bir öncelik sıralamasında soldan sağa ve sağdan sola karıştırma gariptir. Hiç dilbilgisi *, / ve % aynı şekilde ele ama bir tek terimli operasyon (!) olarak değil Aslında, bildiğim kadarıyla ES7 drafts içinde görebiliyordum olarak, bu edilmektedir.

Ayrıca Babil ve traceur dışında hiçbir motorlarının mevcut zamanda ** desteğine sahip olduğunu, dolayısıyla bu noktada çoğunlukla akademik olduğunu. MDN bir wiki'dir ve üstelleştirme operatörü bir Mozillian tarafından eklenmiştir; Ama Mozilla, şu an **'u desteklemediğinden, aslında Mozilla'nın dili nasıl yorumladığını belgelemiyor. Sağ sola

+0

Teşekkürler! Bir şekilde deneyimlemenin deneysel olduğunu iddia edemedim ... Sanırım kötü eski günlerde önemli bir geri dönüş olarak içselleştirdim - sanırım bu FORTRAN'da. :) – NessBird

+0

Exponentiation bir tür önemli; ama sen Math.pow' var. '' 'sadece sözdizimsel şekerdir. – Amadan