1.语法风格:缩进 vs 括号
Python:强制使用缩进(通常是 4 个空格)来表示代码块。缩进错误直接导致语法错误。if True: print("Hello") #必须缩进
JavaScript:使用大括号 {} 和分号 ;。缩进只是为了美观,不影响执行。
if (True) {console.log("Hello"); // 必须用花括号包裹}
2.变量声明:
name = "Alice"#变量AGE = 25 #常量(习惯写法,非强制)
JavaScript:必须使用 let(可变)、const(不可变)或 var(老旧)来声明。
let name = "Alice"; // 可变变量const AGE = 25; // 常量(强制不可变)
3. 数据类型与结构
对比项 | Python | JavaScript |
字符串格式化 | f"Hello {name}"(f-string) | `Hello ${name}`(模板字符串) |
数组 / 列表 | list(可变) tuple(不可变) | Array(可变) |
键值对 | dict(字典) | Object 或 Map |
空值 | None | null 或 undefined |
布尔值 | True、False(首字母大写) | true、false(全小写) |
Python中的dict和Js中的Map更为相似,都没有原型,通过键值对存储。JS中的object是“带默认属性的普通对象”,不是为纯映射设计的。Python中键必须可哈希,Map中键可以是任意值,object中键是字符串或symbol。4. 一个强类型,一个弱类型
Python:强类型。不会轻易进行隐式转换。比如 "5" + 2 会直接报错,必须显式转换为同类型。JavaScript:弱类型(宽松)。会自动进行类型转换(强制类型转换)。* "5" + 2 等于 "52" (数字转字符串,拼接)* "5" - 2 等于 3 (字符串转数字,计算)5. 函数与参数
参数传递非常灵活,支持关键字参数和默认参数,且函数是一等公民。def greet(name, msg="Hello"):#默认参数return f"{msg}, {name}"greet(name="Alice", msg="Hi")#关键字参数调用
JavaScript:传统函数使用 function,现在更流行箭头函数 =>。参数默认值写法类似 Python,但 JS 还有一个特殊的 arguments 对象可以获取所有参数。6.Class语法
Python 是真正基于类的面向对象,有独立的类对象、实例对象,继承关系就是类之间的继承树。JavaScript 是基于原型的面向对象,class只是语法糖,底层仍然是原型链查找属性和方法。方法和静态属性写在类体中,实例属性一般在 __init__中用 self.xxx = ...绑定。class Animal: def speak(self): print("animal speaks")class Dog(Animal): passd = Dog()d.speak() # animal speaks
实例属性通常在 constructor中用 this.xxx = ...。方法写在类体中(其实是挂载到原型上的函数)。classAnimal{ speak() { console.log("animal speaks"); }}classDogextendsAnimal{}const d = new Dog();d.speak(); // animal speaks
extends语法看起来一样,但底层是把 Dog.prototype.__proto__指向 Animal.prototype,形成原型链继承。
7.打印和注释
对比项 | Python | JavaScript |
打印 | print("Hello") | console.log("Hello") |
注释 | 单行:# 注释 多行:"""注释"""或'''注释''' | 单行:// 注释 多行:/* 注释 */ |
如果你觉得文章内容有用,请记得点赞、收藏、转发。
点击下面的公众号名片直接关注!