2015-03-05 20 views

cevap

173

Jackson kısmen answered this benzer söz konusu vardır:

Örtülü dönüşü, ama sadece bir blok yoktur. Bir tek satırlık birden fazla satır genişler ve programcı bir return eklemek unuttuğunda

  • Bu hatalar oluşacaktır.
  • Örtük döndürme sözdizimsel olarak belirsizdir. (name) => {id: name}, {id: name} nesnesini döndürür? Yanlış. undefined döndürür. Bu diş telleri açık bir bloktur. id: bir etikettir.

bir block bu tanımına ilişkin ekleyin:

bir blok ifadesi (veya başka bir dilde bileşik tablosu) grup, sıfır ya da daha fazla tablolar için kullanılır. Blok bir çift kıvrık parantez ile sınırlandırılmıştır.

Örnekler: Bu üstünlüğü başparmak anlaşılması

// returns: undefined 
// explanation: an empty block with an implicit return 
((name) => {})() 

// returns: 'Hi Jess' 
// explanation: no block means implicit return 
((name) => 'Hi ' + name)('Jess') 

// returns: undefined 
// explanation: explicit return required inside block, but is missing. 
((name) => {'Hi ' + name})('Jess') 

// returns: 'Hi Jess' 
// explanation: explicit return in block exists 
((name) => {return 'Hi ' + name})('Jess') 

// returns: undefined 
// explanation: a block containing a single label. No explicit return. 
// more: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label 
((name) => {id: name})('Jess') 

// returns: {id: 'Jess'} 
// explanation: implicit return of expression () which evaluates to an object 
((name) => ({id: name}))('Jess') 

// returns: {id: 'Jess'} 
// explanation: explicit return inside block returns object 
((name) => {return {id: name}})('Jess') 
+3

Sen örtülü bir nesneyi döndürebilir açık olmak zorundadır Beğen. ((name) => ({id: name})) ('Louis') ' – vdclouis

+2

@vdclouis Evet, bu ikinci en son örnek: '((name) => ({id: name })) ('Jess') // döndürür {id: 'Jess'} ' –

+0

Ben bu sözdizimini alamıyorum .. bir sınıf littoral kullanarak bir sınıf oluşturuyorsunuz ve daha sonra ima edilen bir c çağırıyorsunuz Tek argümanlı ('Jess') eğitmen? Bunu ((isim) => ({id: 'Jess'})) –

10

... etkili bir şekilde olan işlevler için

dönüştürür (bağımsız değişkenlerin tek hat-manipülasyonlar) , dönüş örtülüdür.

Adaylar şunlardır: diğer operasyonlar bloğu gerektiren (birden fazla-gömlekleri için

// square-root 
value => Math.sqrt(value) 

// sum 
(a,b) => a+b 

, dönüş istediğiniz olsaydı