A powerful, fast, lightweight, embeddable scripting language.
Pro Prototype based object oriented programming
Prototype based OOP was designed to be a more clear and easy to understand alternative to class based OOP, the creators of prototypes seeing classes as an unnecessary and complex way of handling classes. As such, it may be an ideal way to introduce a beginner to OOP concepts.
Con Undeclared variables are global
When writing a function, if a programmer forgets to declare a variable, that variable will be declared at global scope. The code will seem to run fine at first, but if another function uses a variable with the same name, but fails to declare it, it will create subtle, incredibly difficult to find bugs.