最常混淆的10个差异点
一、最常混淆的 10 个差异点
| # | 混点 | Python 行为 | JavaScript 行为 | 后果 |
|---|---|---|---|---|
| 1 | 空数组/空对象 | if []: 假 | if ([]) 真 | 条件判断逻辑完全相反 |
| 2 | 访问不存在属性 | 抛 KeyError/AttributeError | 返回 undefined | 错误被静默吞掉 |
| 3 | 变量声明 | 裸写 x = 1 | 必须 let x = 1 | 忘写 let 变全局变量 |
| 4 | 三元顺序 | "及格" if s>=60 else "不及格" | s>=60 ? "及格" : "不及格" | 写反了逻辑颠倒 |
| 5 | join 调用者 | "、".join(arr) | arr.join("、") | 反着调用报错 |
| 6 | var 作用域 | 无此概念 | var 穿透 {} | 循环里用 var 出闭包 Bug |
| 7 | 箭头函数 this | lambda 无 this | 箭头函数无自己的 this | 对象方法里用 =>,this 不是对象 |
| 8 | 函数 this | self 是显式参数 | this 隐式,看调用方式 | obj.fn 赋值给变量再调,this 丢失 |
| 9 | 两个空值 | 只有 None | null + undefined | 搞不清楚什么时候用哪个 |
| 10 | elif vs else if | elif | else if | 拼写错误(小问题但有) |
速记卡(面试闪卡)
Q1:一句话讲清「最常混淆的10个差异点」到底是什么?
A:这份笔记整理了 Python 与 JavaScript 在真假值、变量声明等 10 处最易混的语法差异。
Q2:十一、最常混淆的 10 个差异点 —— 怎么理解?
A:像中英双语对照表:同一件事两语言写法不同,记混就出 Bug。这篇把 Python 与 JS 在条件判断、变量声明、this 等 10 处的差异列成一张表。Syntax Difference(语法差异)是跨语言面试高频坑。
Q3:条件判断与真假值的差异 —— 怎么理解?
A:像空数组的布尔值:Python 里 if []: 为假,JS 里 if ([]) 为真,逻辑完全相反;两个空值也分 None 与 null/undefined。Falsy Value(假值)/ Truthy Value(真值)规则不同最容易踩坑。
Q4:变量声明与作用域 —— 怎么理解?
A:像写信署名:Python 裸写 x=1 就行,JS 必须 let x=1 否则变全局变量;var 还穿透块级作用域,循环里用容易出闭包 Bug。Lexical Scope(词法作用域)差异是移植代码的暗雷。
Q5:this 绑定与两个空值 —— 怎么理解?
A:像箭头函数的 this:JS 箭头函数没有自己的 this,对象方法里用 => 会丢绑定;Python 用显式 self。JS 还有 null+undefined 两个空值,比 Python 只有一个 None 更费解。
Q6:核心速记主线有哪些?
-
真假值:Python 空数组/空对象为假,JS 为真,条件逻辑相反
-
变量:Python 裸赋值可行,JS 忘 let 变全局;var 穿透块级作用域
-
this:Python 无 this,JS 的 this 看调用,箭头函数无自身 this
-
空值:Python 只有 None,JS 分 null 与 undefined 两套
口诀
A:Python 与 JS,真假值相反;
变量必写 let,var 穿块间;
JS 双空值,this 看调用;
跨语言移植,对表莫记混。
相关链接
-
📋 目录:00-JavaScript
-
📚 学习清单:八股文学习路线图