Another key feature of vJass is that it is object oriented. What this means is that if you want to script some behavior for a car, you create a "car" object and define some variables and behaviors which it will be using. For instance, you could give it variables such as "speed" and "actor" (the unit representing your car, i usually just name it "u"), and behaviors (methods) such as "accelerate" (which increases speed by 5 every second), "enter driver" and "exit driver" (which maybe activates/deactivates the car). Whenever you create a new car, you will be able to manipulate it using these methods and change these variables for it.
Another feature is that you can keep some parts of your code secret from the other parts (wait, what?). The reason you would want to do this is that sometimes when having large amounts of code, or if you are using other peoples resources, there might be variable or function names which have the same names, and hence are conflicting. You can fix this by making sure certain parts of your code only has access to the things they need, and nothing more. Kind of a "need to know basis", lol.
In regular JASS, you have a more linear approach. Functions and variables don't belong to any specific object, and most code has to be run from some kind of trigger. All global variables have to be declared in the variable editor, which is a bit cumbersome.