




















这是一个创建于 166 天前的主题,其中的信息可能已经有所发展或是发生改变。
写了很多年 js ,都是用三等号。即使类型不匹配也要强制使用 Number String 等方式转换一下再判断。
现在发现双等号直接可以帮你转类型后再比较。
甚至可以这么用: if (a == 0) { ... }, 这里当 a 是 0 / "" / false 时候都成立。
看到很多项目都把双等号给禁了( eslint eqeqeq ),没仔细研究,但有些情况下还是不错的。
1 aisles1 2025 年 12 月 31 日无脑=== |
2 june4 2025 年 12 月 31 日val == null 应该是 js 基本常识技能吧?那判断为 null 你是怎么做的? val === null || val === undefined? |
3 gorvey 2025 年 12 月 31 日 |
4 qiaobeier 2025 年 12 月 31 日十多年前我用这个当面试题来着😂 |
8 ixixi 2025 年 12 月 31 日不知道啊 ,我用 ts |
9 wu00 2025 年 12 月 31 日十几年前好像都是== |
10 maplezzz 2025 年 12 月 31 日隐式转换设计的太复杂了,不同的类型,各种各样可能的 case ,用的时候很容易出现意料之外的问题 |
11 jydeng 2025 年 12 月 31 日太麻烦了,容易出问题 |
13 MinorN 2025 年 12 月 31 日坚决 === ,我同事曾经用 == 找了 1h 的 bug ,然后叫我帮忙看看哪里出了问题 |
14 cpstar 2025 年 12 月 31 日if(!!val) |
15 masterclock 2025 年 12 月 31 日完全不适用 ==,只用 === |
16 g17 2025 年 12 月 31 日无脑 === ,手动转类型 |
17 aloxaf 2025 年 12 月 31 日> 甚至可以这么用: if (a == 0) { ... }, 这里当 a 是 0 / "" / false 时候都成立。 我觉得代码中就不应该出现 a 有可能是 0 / "" / false 的情况…… |
18 temporary 2025 年 12 月 31 日如果需要展示的情况,0 需要展示,而 "" NaN null undefined 大概率要展示成 - |
19 ethusdt 2025 年 12 月 31 日@june4 #12 哦,我明白了,就是判断某个值是 null ,而非 0/空字符串/false 之类的具体值。但是业务场景下,这些都是一样效果,用户没有填一个值那就给默认 false/0/空字符串,除非有特殊需求默认成其他值。 我想到的就这点了。能再举几个例子场景么。 |
21 crocoBaby 2025 年 12 月 31 日卧槽,我一直偷懒用的==,确实遇到 0 和 false 和 null 的问题 |
22 craftsmanship 2025 年 12 月 31 日 via Android总有人说 JS 简单 结果在双等和三等上面都分不清楚适用场景,,,也分不清 falsy value 和 nullish value |
23 craftsmanship 2025 年 12 月 31 日 via AndroidJS 是个由于初期设计太过垃圾而导致引入过多不必要的复杂性的语言 有大量细节需要记忆 由于不规范导致的灵活性让人可以玩花活 写出来的代码难读难维护 反直觉的设计让不熟悉这门语言的人踩很多坑 很多使用者根本意识不到自己在干什么 看看上面的回复就知道了 |
24 shintendo 2025 年 12 月 31 日 |
26 craftsmanship 2025 年 12 月 31 日 via Android@shintendo 我原来就是遵守这个规范 但现在感觉#15 的做法更好 完全避免 JS 的那些隐式语义 包成 util 不费劲而且一目了然 让所有人都能读懂意图 |
30 craftsmanship 2025 年 12 月 31 日 via Android@tonytonychopper 怎么说呢 为了八股而八股的话 完全没必要 属于做题大国的坏习惯 但八股里考察的点 其实是有意义的 只是以八股的形式出现很恶心 |
31 craftsmanship 2025 年 12 月 31 日 via Android@meteor957 有 #24 已经提过了 再具体点说就是 唯一使用双等的场景 就是用来判断 nullish value |
32 GuguDan 2025 年 12 月 31 日用的,因为有时候接口就是会返回 ‘0’ |
33 craftsmanship 2025 年 12 月 31 日 via Android@GuguDan 坏习惯 这种应该 Number(val) === 0 而非偷懒使用双等的隐式转换 |
34 hafuhafu 2025 年 12 月 31 日以前前端工程化没流行开的时候,只用`==`的人大把,甚至反而很多人都不知道`===`。特别是一些后端顺便写前端的人。 |
35 gdw1986 2025 年 12 月 31 日 via Android这种现在交给 AI 应该没什么难度吧 |
36 Shaar 2025 年 12 月 31 日我刚入行做 cocos-js 开发的时候,根本不知道===这个东西,一直用== 直到出现了一个隐形 bug ,查了非常久才知道有==和===的问题,十年了,我都无法忘怀这个东西 |
38 lueluev 2025 年 12 月 31 日我去,开倒车 |
39 wangtian2020 2025 年 12 月 31 日我只用 == 很少用严格===。 |
41 woodcutter 2025 年 12 月 31 日小程序页面穿参会把 number 转成 string ,一般我想省事就用==,懒得再转了。 |
42 akakidz 2025 年 12 月 31 日双等号就是邪修,TC39 委员会的人,也不能把双等号在项目里用明白 太复杂了!下一个维护项目的人,难道要在脑子里跑一遍所有场景下状态机 预判前人写的双等号可能要处理的业务逻辑? |
43 silverwzw 2025 年 12 月 31 日用 a === b || (a !== a && b !== b) |
44 realpg 2025 年 12 月 31 日我是邪修 我很常用 == 必要时候才 === 大概是弱类型语言用的太多了 对==和===一般不会写出 bug |
45 zbinlin 2025 年 12 月 31 日只有一种情况会用:判断是 等于或不等于 null 和 undefined 时。 |
47 ASHYWHISPER 2025 年 12 月 31 日我在想,反正基本上都是无脑===为什么 ES 规范,不直接将==表示===的作用呢,当然我是刚学前端的 JS 初学者 |
49 kdwnil 2025 年 12 月 31 日 via Android多数时候都不应该用==,但特殊情境下,手搓超短代码的时候可以靠这种隐式转换省一点空间,就用了 |
52 meteor957 2025 年 12 月 31 日@craftsmanship 既然如此,=== 依然可以 cover 所有场景且没有太多成本。我刚刚说面试都不应该问的原因是不管是实际开发还是面试都应该默认遵守使用===的规则,当你使用==时本身就引入了不必要的心智负担。 |
54 qwerty12345 2025 年 12 月 31 日老项目里全是[==],还好没有出过什么大问题,现在重构了,基本都是[===] |
55 v21984 2025 年 12 月 31 日除 == null 或者 == undefined 这两种情况外,全使用 === |
56 CarryOnHxy 2025 年 12 月 31 日eslint eqeqeq 规则有个 smart 模式 |
57 TimPeake 2025 年 12 月 31 日 |
59 TimPeake 2025 年 12 月 31 日@TimPeake 噢不对,是用。不用 === 。 |
61 IamUNICODE 2025 年 12 月 31 日我是直接设置 eslint 警告的,不接受== |
62 freezebreze 2025 年 12 月 31 日现在回想起来以前学 js 。在没有 ai 的年代,简直是在历屎中遨游 |
64 94 2025 年 12 月 31 日早期很长一段时间用的 == 因为学编程的时候就是 = 和 ==。 隐式转换有些时候是好用,但是有一些时候会埋坑。 |
65 LandCruiser 2025 年 12 月 31 日处理==null 这种问题的唯一正确方式是,if ( valid ){}else{} 而不是 if ( unvalid ){} |
67 SanjinGG 2025 年 12 月 31 日@june4 #12 但 js 中的 null 更多应该指的是未赋值的对象,或者空对象,一般也就 val 是 object 时才会出现 null ,他为什么存在空串,0 的情况? if(val)完全够用。js 只是没有强约束,但应该也没憨憨就一个变量,一直赋值不同类型值一路使用吧? |
70 june4 2025 年 12 月 31 日@SanjinGG 啊,你哪怕是用 ts,就没有见过这种类型 `number | null | undefined` ? 或 `string | null | undefiend` |
71 Aliceeeeee 2025 年 12 月 31 日 via iPhone禁用==。同时也绝不使用 null, 一律 undefined |
74 AoEiuV020JP 2025 年 12 月 31 日确实有时候感觉双等号是不是方便点, 尤其奇葩项目中 userId 是 string|number 混用的, |
75 nicenight 2025 年 12 月 31 日只要你不用单等号,我都能接受。你要是像我同事一样用单等号做判断,那我就要放狗了 |
78 craftsmanship 1 月 1 日 via Android@Aliceeeeee 同时 null 和 undefined 的语义是不一样的 这种 billion dollar mistake 你要不要了解下再写 JS ? |
79 SanjinGG 1 月 1 日 via Android@june4 没见过,初始化大部分也是赋值空字符串,根本不会给 null ,undefined 也只有在开发阶段会出现,到最终上线根本不会让他是 undefined |
80 liuxue 1 月 1 日自己写的代码不用,别人的代码逻辑简单的,能找到类型的就换掉。 |
81 goodboy95 1 月 3 日 via Android没这个胆子用双等号。 |
82 kenvix 1 月 3 日有一种情况可以安全使用==,就是判断是否为 null 或 undefined ,这种情况我都是这样做的,没有任何问题。 |
84 NerbraskaGuy 1 月 4 日无脑用===的遇到后端接口明明规定是 1 实际给'1',而且不同接口 string 和 number 看心情来,这种的就老实了 |
85 humbass 1 月 5 日都没讲到重点,实际上浏览器的环境有关。 前端表单的内容都是 字符串,当后端数据一起计算拼接的时候, === 就不是很方便,因此 == 就派上用场了。 |
87 BetterJason 1 月 5 日@GuguDan #32 这种就是后端太垃圾导致的后果,要吗都用 0 要吗都用“0”, 一会儿这样 一会儿那样, 这种人就是把代码当儿戏,我现在接手的项目里面就是这样,导致出了很多问题,特别恶心人! |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。