最常混淆的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 ? "及格" : "不及格"写反了逻辑颠倒
5join 调用者"、".join(arr)arr.join("、")反着调用报错
6var 作用域无此概念var 穿透 {}循环里用 var 出闭包 Bug
7箭头函数 thislambda 无 this箭头函数无自己的 this对象方法里用 =>,this 不是对象
8函数 thisself 是显式参数this 隐式,看调用方式obj.fn 赋值给变量再调,this 丢失
9两个空值只有 Nonenull + undefined搞不清楚什么时候用哪个
10elif vs else ifelifelse if拼写错误(小问题但有)

速记卡(面试闪卡)

Q1:一句话讲清「最常混淆的10个差异点」到底是什么?

A:这份笔记整理了 Python 与 JavaScript 在真假值、变量声明等 10 处最易混的语法差异。

Q2:十一、最常混淆的 10 个差异点 —— 怎么理解?

A:像中英双语对照表:同一件事两语言写法不同,记混就出 Bug。这篇把 Python 与 JS 在条件判断、变量声明、this 等 10 处的差异列成一张表。Syntax Difference(语法差异)是跨语言面试高频坑。

Q3:条件判断与真假值的差异 —— 怎么理解?

A:像空数组的布尔值:Python 里 if []: 为假,JS 里 if ([]) 为真,逻辑完全相反;两个空值也分 Nonenull/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 看调用;

跨语言移植,对表莫记混。

相关链接