Just because a language is dynamically typed doesn't make it a "scripting language".
(So is TCL, but I don't think it has a module system.)
I usually take "scripting language" to mean "a language only suitable for combining pre-written components", since that seems to be the only useful definition. Other definitions are too broad (containing such languages as Python, Java, Haskell, and Forth) or too narrow (excluding QuakeScript, JavaScript, or Bash).
In particular, I refuse to call any language a "scripting language" merely because it uses dynamic typing, implicit compilation, or high-level concepts.
Javascript can be run at the command-line just like ruby, python, and the rest. You can write a full application in pure javascript without depending on external third party tools too -- see stuff like nodejs.
Also, I don't know of anyone that would consider Haskell to be a scripting language. If we consider Haskell a scripting language, we might as well consider Java, C, C++ to be scripting languages too...
How do you write a full application in JavaScript? The language doesn't even define any way to open a file. NodeJS is a third-party tool -- it's not part of the JavaScript language.
I'm not saying Lua isn't a full programming language - it's actually my language of choice for day-to-day hacking, supplemented with C as necessary. It was clearly designed to accommodate projects where it isn't primary language, though.
> (like Java used to be)
So Java doesn't run on a virtual machine anymore?