2017-07-06 141 views
5

bekliyor, nasıl aşağıdaki deyimi bulunduğu anlamına gelmektedir:operatörün önceliği:! ve JavaScript yılında

cond1 && !await f() 

Bu hat bir üretim uygulama içinde

if(cond1 && !await f()){ 
    do_stuff(); 
} 

bir alıntıdır. krom onunla iyi olacak gibi görünüyor, ama ios bu ios (!await)(f()) yerine !(await f()) içine !await f() dönerse gibi görünüyor

unexpected identifier 'f'. Expected ')' to end an if condition. 

okunurken bir hata neden olur.

Soru için şimdi: ECMA-262'a göre Yukarıdaki satırın doğru yorumu nedir?

P.S. .: Biz Bu operatör önceliği ile ilgisi yoktur

var f_result = await f(); 
if(cond1 && !f_result){ 
    do_stuff(); 
} 
+0

ios JS motorunuzun henüz uyumsuz/henüz desteklemiyor gibi görünüyor. Özellikle hangi uygulama (tarayıcı) sürümünü kullanıyorsunuz? – Bergi

+0

@Bergi, üretim ios cihazlarımızı mutlu bir şekilde uyumsuz/beklemede yapıyorlar. Sadece bu kesin ifadeyi çiğnediler. – niklasfi

+0

@Bergi sürümü hakkında: geçerli olan bu olurdu. 10.3. http://caniuse.com/#search=await – niklasfi

cevap

2

bunu değiştirerek ios kodunu sabit. delete, void, typeof, +, -, ~, ! ve await tümü aynı üretim amacı ile çözümlenir ve keyfi iç içe olabilir - hem tekli önek operatörleri olduğundan, bu ifade yorumlanabilir yalnızca tek bir yolu var. Ve evet, ES2017’de geçerli bir sözdizimi.