Python和JavaScript的语义有多大不同?

28 投票
6 回答
17932 浏览
提问于 2025-04-15 16:19

这两种语言在我看来非常相似。虽然Python支持真正的类,而不是像原型那样的结构,但在Python中,类和函数其实没什么太大区别,都是用来生成包含值和函数的对象,就像你在JavaScript中做的那样。另一方面,JavaScript只支持浮点数和字符串作为内置的数据类型。

我觉得这些差别看起来比较浅显,所以除了这些,还有哪些更重要的区别呢?

6 个回答

5

在Python中,“self”是明确传递给成员函数的,它并不是一个特殊的关键词或者其他什么东西。简单来说,当你在类里定义一个方法时,必须把“self”作为第一个参数,这样方法才能知道它是属于哪个对象的。

而在JavaScript中,“this”的作用范围是动态的。也就是说,“this”指向的对象会根据你怎么调用这个函数而变化。你可以通过调用apply()方法来改变一个成员函数的作用范围,这样可以让它在不同的上下文中使用。

6

类型: Javascript 和 Python 都是 动态类型 的语言,也就是说你不需要在写代码的时候提前声明变量的类型。不过,Javascript 是 弱类型 的,而 Python 是 强类型 的。

40
  1. Python的经典继承和ECMAScript的原型继承
  2. ECMAScript使用大括号和分号,而Python则是通过空格和缩进来组织代码的
  3. Python没有var这个关键字,ECMAScript中有隐式全局变量,但两者都是基于词法作用域的
  4. 在Python 2.5及更早版本中,闭包的功能有点“有限”,因为绑定的变量是只读的,不能像在ECMAScript中那样访问私有变量
  5. Python中没有undefined,而是会抛出异常
  6. Python中的不可变列表数组(元组)
  7. Python没有switch语句,但鼓励使用字典来实现类似的功能,有时将属性赋值给匿名函数并执行它们也很方便
  8. ECMAScript 3没有yield语句,也没有let表达式/语句和array comprehension,不过这些在Mozilla的JS中是有的,但不算标准
  9. raisethrow的区别,exceptcatch的区别(Python和JS)
  10. ECMAScript中有原生的Unicode字符串
  11. Python中使用关键字运算符,比如andisnot
  12. Python不支持像i++这样的计数器
  13. Python的for循环是“智能”的,所以你不需要用计数器来遍历列表,也不会遇到从Object.prototype继承的原型属性
  14. 在Python中创建对象时不需要使用new操作符
  15. Python是鸭子类型(即根据对象的行为来决定类型,而不是根据对象的类型)

我从这个网站偷了一些信息:http://hg.toolness.com/python-for-js-programmers/raw-file/tip/PythonForJsProgrammers.html

撰写回答