That changed with the release (and exploding popularity) of jQuery in the mid-2000s. jQuery popularized passing and returning (rather than nesting) functions. Users were, unknowingly, becoming familiar and comfortable with functional programming techniques.
The books have very different tones. Braithwaite’s is breezier and covers more ground, but risks having the less-attentive reader lose the trail. Fogus’ book is more conscientious to the details, which can make the text a little dry at times, but may provide a more solid foundation for the reader. I cannot recall two books that struck me as so equal in their technical content and accuracy while having such disparate styles.
Both authors emphasize pragmatics over programming-language theory, but the scope of both books is deep enough so that there’s no avoiding sentences that are difficult to casually unpack (“Apply is a method that is implemented by every function that takes a context as its first argument, and it takes an array or array-like thing of arguments as its second argument”). Both books do a good job of presenting many source-code examples and practical recipes. Neither book pretends to be a comprehensive text on functional programming. Both authors write clearly and accurately. I’m not normally averse to making a recommendation, but in this case, I think it’s truly necessary to read Braithwaite’s sample chapter and decide if the tone is to their taste.
Larry O’Brien is a developer evangelist/advocate for Xamarin. Read his blog at www.knowing.net.