How different are the semantics between Python and JavaScript? How different are the semantics between Python and JavaScript? python python

How different are the semantics between Python and JavaScript?


  1. Classical inheritance in Python, Prototypal inheritance in ECMAScript
  2. ECMAScript is a braces and semicolons language while Python is white-space and indent/block based
  3. No var keyword in Python, implicit globals in ECMAScript, both are lexically scoped
  4. Closures in Python 2.5 and lower ( re: Alex Martelli's comment ) are somewhat "limited" because the bindings are read-only, you can't access private variables like you could in ECMAScript
  5. There's no undefined in Python, exceptions are thrown
  6. Immutable list arrays in Python ( tuples )
  7. No switch statement in Python but instead you're encouraged to use a dictionary in that manner, sometimes its convenient assigning properties to lambdas and executing them
  8. ECMAScript 3 does not have a yield statement, nor let expressions/statements, nor array comprehensions - however these are included in Mozilla's JS which is non-standard
  9. raise vs throw, except vs catch ( Python, JS )
  10. Native Unicode strings in ECMAScript
  11. keyword operators such as and, is, and not are used in Python
  12. Python doesn't support counters such as i++
  13. Python's for loop is "smart" so you don't need to use a counter for enumerating through lists, nor do you run into prototypal properties inherited from Object.prototype
  14. You don't have to use the new operator in Python to create objects
  15. Python is duck-typed

I stole a good bit of info from http://hg.toolness.com/python-for-js-programmers/raw-file/tip/PythonForJsProgrammers.html


Typing: Javascript and Python are both dynamically typed, whereas javascript is weakly, python strongly typed.


In python, "self" is explicitly passed to a member function, and is not a special keyword or anything.In javascript, "this" is dynamically scoped. you can fiddle with the scope of a member function by calling apply() on it.