While I really like comprehensions, as soon as you need a conditional, or any level of nesting, you pretty much have to break it out into a loop to keep it readable.<p>OTOH, block syntax (I don't think that's the correct term for it) has always irked me in JS, due to verbose function declaration, and no implicit return. So beautiful syntax in ruby like:<p><pre><code> some_array.map { |el| el.length }
# Or the succinct version:
some_array.map(&:length)
</code></pre>
Looks like this in JS:<p><pre><code> someArray.map(function() { return this.length; });
</code></pre>
Now that ES6 has arrow functions with implicit returns, we can do this:<p><pre><code> someArray.map( s => s.length );
</code></pre>
Since both comprehensions and implicit return functions are being released around the same time, I'll be interested to see which of the two gets more adoption.