The bad side is that server side languages are vital to anything serious and I can’t think of one that uses prototypical inheritence. It could be difficult for a developer to wrap their head around common design patterns. MVC specifically.
Strict data checking
I remember it well because I was not taught that I could. Not because my instructor didn’t know, but because he thought it was bad practice to leave them out. I do leave out braces occasionally, but never without thinking if I should be leaving them out.
“Makes it easier to understand functions as an object. I’ve found that when you show new developers a function being assigned to a variable it suddenly becomes much more obvious that a function is actually an object and can be manipulated as such (and that a function can be passed as an argument to another function). Thus students are advanced along the path towards a better understanding of functional programming.”
Coming from function statements in every language I know, function literals were difficult for me. Once I grasped the concept, tossing around anonymous functions started making more sense. Teaching tossing functions around from the beginning can be quite powerful.