惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
C
Cybersecurity and Infrastructure Security Agency CISA
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
T
Threat Research - Cisco Blogs
C
Cisco Blogs
Recent Announcements
Recent Announcements
S
Securelist
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
月光博客
月光博客
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
博客园 - 司徒正美
L
LINUX DO - 最新话题
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
H
Help Net Security
Spread Privacy
Spread Privacy
PCI Perspectives
PCI Perspectives
Project Zero
Project Zero
I
Intezer
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future
T
Tenable Blog
Jina AI
Jina AI
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux - V2EX [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 新电脑 brew install node 之后,一个小设置可以提升对供应链投毒的防御 - V2EX GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? - V2EX 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? - V2EX gemini cli 貌似挂了,一直返回 403 - V2EX 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 - V2EX 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 - V2EX 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 - V2EX 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 - V2EX 只有我一个人觉得 codex 不好用? 做了个 AI + 真人专家监督的广告投放平台 Auxora, 7 个品牌跑出 6x ROAS 如何走出至亲的离世 Claude Web 端貌似 claude-opus-4-7 偷偷上了? 现在 Apple 开发者帳號應該是用哪个地区会更好? - V2EX 用回测筛选因子的一点经验分享 给女儿 vibe 了一个故事类的 app,做完发现,这类应用似乎上线难度极大? - V2EX 手机格式化 bitget 钱包没了,里面开通的银行卡还有机会拿到吗 - V2EX [送码] TransVoice - 我的第一款 App 上架啦!实时转写+翻译+字幕,会议听课好助手! PictureHub 高清摄影作品的画廊 Planet 的第一个使用 macOS 26 SDK 构建的 Insider 版本 20260416-1 - V2EX 成都二手房是不是在涨价,有点坐不住了 - V2EX claude 生态(skill mcp plugin)等 Studio Display XDR VESA 适配器脱落 有在用印度区 applestore 的大哥嘛,请教一下礼品卡去哪里买呢 - V2EX 我好像知道京东家政爆火的原因了 - V2EX 薅了公司的 a 家 api key,用机场 ip 做代理容易被封吗 如何在初期就识别 HR 在刷 KPI,没打算招你? [分享]精心打造一个 AI 编程知识库(算法/设计模式/提示词/Skills),助力程序员转型 港版 iPhone 在国内支持联通 5GA 吗?在广东用 想办港卡 AI 对 it 行业影响太大了 我做了个把照片变成 iOS 小组件贴纸的 App ChatGPT Pro 5x 套餐 量真的很足! I have found a method to directly generate advertising video materials using scripts 在小城市开个店,给人写软件,有前途吗 chrome 最新的 147 版直接卡爆炸了 - V2EX 为什么厂家不在 skill/mcp 这类的工具中塞广告呢?这样不是可以大赚嘛? minimax 真是脸都不要了,工作日下午 14:00 定时开启 529,脸都不要了。训练模型居然占用用户使用时间 外资非核心部门 vs 另一家外资的核心部门,该跳吗? iTad 标签 扩展 加小动作 ? - V2EX 去年 H200 能买,不让买是代替快出来了? - V2EX AI 赛事通 - 2026 年 4 月中国区新增 AI 竞赛和黑客松汇总 - V2EX V2EX › 登录 现在安卓开发都在做啥 - V2EX 浏览器插件 沉浸式翻译 是不支持自定义模型了吗? - V2EX Codex 里的 GPT5.4 也能降智?上午让它改两个问题,改了一个小时了, plus 额度用了一半了还是没改好,和前几天用的体感完全不一样。要它改的问题也不复杂。服了。 目前有使用 claude code 的收到人脸认证的吗 - V2EX 分享一个自己做的 Nginx 管理工具,实时请求动态预览!(无奈市面上实在找不到好用的,自己撸了个) - V2EX claude code 崩了么? 今天在反重力上用 claude 一点都不丝滑,有同样的感受吗? opencode 消息周知插件 今天 claude opus 和前两天比,质的飞跃 - V2EX 999 包月价? - V2EX 一个版本, 50 项更新:我们几乎重做了整个播放页 本地大模型多大显存够用? GOGDNS 一款简易的私人 DNS 服务器 - V2EX API key (GLM) 怎么使用 claude code desktop ? Claude 这样订阅有问题吗 - V2EX 帮我爸找回了一篇赛博兰亭集序 求推荐稳定、高性价比使用 Claude Opus 4.6 的渠道/平台 搞个云端 claude code 防止 封号 - V2EX 用 Claude 要实名了,内地用户怎么办? OpenAI Plus 和 Team 都缩水了吗 海外 Android 手机有什么好用的国内第三方应用市场推荐吗 - V2EX 把电脑伪装成电视,用 DLNA 投屏拿到视频号直播流地址 - V2EX claude 认证莫慌 北京互联网法院有什么攻略么?起诉北京智谱华章科技股份有限公司退款可行么? - V2EX Claude 开始引入身份验证 求 vscode 做笔记软件的插件推荐 - V2EX 讯飞星辰的 Coding Plan 如何? Anthropic 宣布在 Claude 平台推行身份验证机制 科普一下低价 gpt 是怎么来的 有没有长期关注 Claude 的朋友,我建了一个 Channel 自动抓取 Claude Team 的推文 啃了那篇 54 页的 Agent Harness 综述, 给大伙讲个省流版 现在那家的 coding plan 还能买到 是不是最近会有什么更聪明的大模型要发布了呀? 用多了 AI 后,有没有觉得 AI 生成的文章有很强的既视感? 如何 实践 Harness 工程? 今日份 GPT 5.4 笑话 如何建一个自己的号池,让 cursor 真正实现 token 自由 写了三个月 Agent Harness,我终于敢让 Claude Code 全自动写代码了
你们 js 用过双等号吗 - V2EX
ethusdt · 2025-12-31 · via V2EX

这是一个创建于 166 天前的主题,其中的信息可能已经有所发展或是发生改变。

写了很多年 js ,都是用三等号。即使类型不匹配也要强制使用 Number String 等方式转换一下再判断。

现在发现双等号直接可以帮你转类型后再比较。

甚至可以这么用: if (a == 0) { ... }, 这里当 a 是 0 / "" / false 时候都成立。

看到很多项目都把双等号给禁了( eslint eqeqeq ),没仔细研究,但有些情况下还是不错的。

  • JS
  • 双等号
  • 类型转换

    87 条回复    2026-01-05 14:30:47 +08:00

    aisles1

    1

    aisles1      2025 年 12 月 31 日   ❤️ 1

    无脑===

    june4

    2

    june4      2025 年 12 月 31 日

    val == null 应该是 js 基本常识技能吧?那判断为 null 你是怎么做的? val === null || val === undefined?

    gorvey

    3

    gorvey      2025 年 12 月 31 日   ❤️ 13

    隐式转换罢了

    qiaobeier

    4

    qiaobeier      2025 年 12 月 31 日

    十多年前我用这个当面试题来着😂

    evan1

    5

    evan1      2025 年 12 月 31 日

    @june4 #2 直接 if (value)判断是否有值

    ethusdt

    6

    ethusdt      2025 年 12 月 31 日

    @june4 啊?判断 null 还要 val == null 么?直接 if (val) 不行么?

    ixixi

    8

    ixixi      2025 年 12 月 31 日

    不知道啊 ,我用 ts

    wu00

    9

    wu00      2025 年 12 月 31 日

    十几年前好像都是==

    maplezzz

    10

    maplezzz      2025 年 12 月 31 日

    隐式转换设计的太复杂了,不同的类型,各种各样可能的 case ,用的时候很容易出现意料之外的问题

    jydeng

    11

    jydeng      2025 年 12 月 31 日

    太麻烦了,容易出问题

    june4

    12

    june4      2025 年 12 月 31 日

    @ethusdt if (val)当然不行,这个把 空串,0 之类的都算 false 了,很多时候就是判断是空值(null),不是没有值

    MinorN

    13

    MinorN      2025 年 12 月 31 日

    坚决 === ,我同事曾经用 == 找了 1h 的 bug ,然后叫我帮忙看看哪里出了问题

    cpstar

    14

    cpstar      2025 年 12 月 31 日

    if(!!val)

    masterclock

    15

    masterclock      2025 年 12 月 31 日   ❤️ 3

    完全不适用 ==,只用 ===
    不直接使用 if(a),全部包装成基于业务语义的 isNull isEmpty isValid isGood...

    g17

    16

    g17      2025 年 12 月 31 日   ❤️ 1

    无脑 === ,手动转类型

    aloxaf

    17

    aloxaf      2025 年 12 月 31 日

    > 甚至可以这么用: if (a == 0) { ... }, 这里当 a 是 0 / "" / false 时候都成立。

    我觉得代码中就不应该出现 a 有可能是 0 / "" / false 的情况……

    temporary

    18

    temporary      2025 年 12 月 31 日

    如果需要展示的情况,0 需要展示,而 "" NaN null undefined 大概率要展示成 -

    ethusdt

    19

    ethusdt      2025 年 12 月 31 日

    @june4 #12 哦,我明白了,就是判断某个值是 null ,而非 0/空字符串/false 之类的具体值。但是业务场景下,这些都是一样效果,用户没有填一个值那就给默认 false/0/空字符串,除非有特殊需求默认成其他值。

    我想到的就这点了。能再举几个例子场景么。

    crocoBaby

    21

    crocoBaby      2025 年 12 月 31 日

    卧槽,我一直偷懒用的==,确实遇到 0 和 false 和 null 的问题

    craftsmanship

    22

    craftsmanship      2025 年 12 月 31 日 via Android   ❤️ 3

    总有人说 JS 简单 结果在双等和三等上面都分不清楚适用场景,,,也分不清 falsy value 和 nullish value
    真特么菜。

    craftsmanship

    23

    craftsmanship      2025 年 12 月 31 日 via Android

    JS 是个由于初期设计太过垃圾而导致引入过多不必要的复杂性的语言 有大量细节需要记忆 由于不规范导致的灵活性让人可以玩花活 写出来的代码难读难维护 反直觉的设计让不熟悉这门语言的人踩很多坑 很多使用者根本意识不到自己在干什么 看看上面的回复就知道了
    从改善这些缺点来讲 TS 是大救星

    shintendo

    24

    shintendo      2025 年 12 月 31 日

    ESLint 关于===的规则("eqeqeq")里,有个选项开关就是允许==null 。

    此外早年流行的几个 JS 代码规范,StandardJS, Airbnb, Google Style Guide, 全都是“禁止使用==,但==null 例外”,算是通行做法。

    craftsmanship

    26

    craftsmanship      2025 年 12 月 31 日 via Android

    @shintendo 我原来就是遵守这个规范 但现在感觉#15 的做法更好 完全避免 JS 的那些隐式语义 包成 util 不费劲而且一目了然 让所有人都能读懂意图

    craftsmanship

    30

    craftsmanship      2025 年 12 月 31 日 via Android

    @tonytonychopper 怎么说呢 为了八股而八股的话 完全没必要 属于做题大国的坏习惯 但八股里考察的点 其实是有意义的 只是以八股的形式出现很恶心
    比如隐式转换就能看出使用者对 JS 的熟悉程度 也是非常常见的坑点 想全记住规则并不现实 因为确实太复杂 但这个都不了解的话 那完全不合格
    然而所有这些在 AI 时代已经不重要了…

    craftsmanship

    31

    craftsmanship      2025 年 12 月 31 日 via Android

    @meteor957 有 #24 已经提过了 再具体点说就是 唯一使用双等的场景 就是用来判断 nullish value
    面试时值得问的点太多了 隐式转换确实不合适 因为这应该是 JS 基本功 默认是了解的

    GuguDan

    32

    GuguDan      2025 年 12 月 31 日

    用的,因为有时候接口就是会返回 ‘0’

    craftsmanship

    33

    craftsmanship      2025 年 12 月 31 日 via Android

    @GuguDan 坏习惯 这种应该 Number(val) === 0 而非偷懒使用双等的隐式转换
    想玩花活?没问题 +val === 0
    少打几个字母 让代码变得晦涩难读 有意义吗?完全没意义 但很多人这样写 显得自己很 6
    这就是 JS

    hafuhafu

    34

    hafuhafu      2025 年 12 月 31 日

    以前前端工程化没流行开的时候,只用`==`的人大把,甚至反而很多人都不知道`===`。特别是一些后端顺便写前端的人。
    多亏了前端工程化和各种创建项目的脚手架以及开源项目里面用了 ESLint ,倒逼大家去学习一些规范。
    说个我感觉很搞笑的事,以前看到有不少人搜 ESlint 报红怎么解决,最后的方案是卸载掉...

    gdw1986

    35

    gdw1986      2025 年 12 月 31 日 via Android

    这种现在交给 AI 应该没什么难度吧

    Shaar

    36

    Shaar      2025 年 12 月 31 日

    我刚入行做 cocos-js 开发的时候,根本不知道===这个东西,一直用== 直到出现了一个隐形 bug ,查了非常久才知道有==和===的问题,十年了,我都无法忘怀这个东西

    lueluev

    38

    lueluev      2025 年 12 月 31 日

    我去,开倒车

    wangtian2020

    39

    wangtian2020      2025 年 12 月 31 日

    我只用 == 很少用严格===。
    项目我一个前端没人管我。 == 能没问题的地方 === 一定没问题。=== 会出现问题的地方 == 可能反而没问题。
    通常情况下只有会 string number 之类的在进行比较,其他一切比较情况都是写法有问题

    woodcutter

    41

    woodcutter      2025 年 12 月 31 日

    小程序页面穿参会把 number 转成 string ,一般我想省事就用==,懒得再转了。

    akakidz

    42

    akakidz      2025 年 12 月 31 日

    双等号就是邪修,TC39 委员会的人,也不能把双等号在项目里用明白 太复杂了!下一个维护项目的人,难道要在脑子里跑一遍所有场景下状态机 预判前人写的双等号可能要处理的业务逻辑?

    silverwzw

    43

    silverwzw      2025 年 12 月 31 日

    用 a === b || (a !== a && b !== b)

    realpg

    44

    realpg      2025 年 12 月 31 日

    我是邪修 我很常用 == 必要时候才 ===

    大概是弱类型语言用的太多了 对==和===一般不会写出 bug

    zbinlin

    45

    zbinlin      2025 年 12 月 31 日

    只有一种情况会用:判断是 等于或不等于 null 和 undefined 时。

    ASHYWHISPER

    47

    ASHYWHISPER      2025 年 12 月 31 日

    我在想,反正基本上都是无脑===为什么 ES 规范,不直接将==表示===的作用呢,当然我是刚学前端的 JS 初学者

    kdwnil

    49

    kdwnil      2025 年 12 月 31 日 via Android   ❤️ 1

    多数时候都不应该用==,但特殊情境下,手搓超短代码的时候可以靠这种隐式转换省一点空间,就用了

    meteor957

    52

    meteor957      2025 年 12 月 31 日

    @craftsmanship 既然如此,=== 依然可以 cover 所有场景且没有太多成本。我刚刚说面试都不应该问的原因是不管是实际开发还是面试都应该默认遵守使用===的规则,当你使用==时本身就引入了不必要的心智负担。

    qwerty12345

    54

    qwerty12345      2025 年 12 月 31 日

    老项目里全是[==],还好没有出过什么大问题,现在重构了,基本都是[===]

    v21984

    55

    v21984      2025 年 12 月 31 日

    除 == null 或者 == undefined 这两种情况外,全使用 ===

    CarryOnHxy

    56

    CarryOnHxy      2025 年 12 月 31 日

    eslint eqeqeq 规则有个 smart 模式

    TimPeake

    57

    TimPeake      2025 年 12 月 31 日

    不用 怕别人看出我是前端仔

    TimPeake

    59

    TimPeake      2025 年 12 月 31 日

    @TimPeake 噢不对,是用。不用 === 。
    ---------
    之前很久了 某个群里 吹牛闲聊,发了 类似 xxxx === xxxx 这样的伪代码,结果群里立马有人回复,“你小子前端仔 ?”

    IamUNICODE

    61

    IamUNICODE      2025 年 12 月 31 日

    我是直接设置 eslint 警告的,不接受==

    freezebreze

    62

    freezebreze      2025 年 12 月 31 日

    现在回想起来以前学 js 。在没有 ai 的年代,简直是在历屎中遨游

    94

    64

    94      2025 年 12 月 31 日

    早期很长一段时间用的 == 因为学编程的时候就是 = 和 ==。
    后面业务写的多起来之后才慢慢改成 ===。一些地方该用 _.isNill 之类的就用,而不是自己去写空值判断逻辑。

    隐式转换有些时候是好用,但是有一些时候会埋坑。

    LandCruiser

    65

    LandCruiser      2025 年 12 月 31 日

    处理==null 这种问题的唯一正确方式是,if ( valid ){}else{} 而不是 if ( unvalid ){}

    SanjinGG

    67

    SanjinGG      2025 年 12 月 31 日

    @june4 #12 但 js 中的 null 更多应该指的是未赋值的对象,或者空对象,一般也就 val 是 object 时才会出现 null ,他为什么存在空串,0 的情况? if(val)完全够用。js 只是没有强约束,但应该也没憨憨就一个变量,一直赋值不同类型值一路使用吧?

    june4

    70

    june4      2025 年 12 月 31 日

    @SanjinGG 啊,你哪怕是用 ts,就没有见过这种类型 `number | null | undefined` ? 或 `string | null | undefiend`

    Aliceeeeee

    71

    Aliceeeeee      2025 年 12 月 31 日 via iPhone

    禁用==。同时也绝不使用 null, 一律 undefined

    AoEiuV020JP

    74

    AoEiuV020JP      2025 年 12 月 31 日

    确实有时候感觉双等号是不是方便点, 尤其奇葩项目中 userId 是 string|number 混用的,
    但 AI 写的代码总是用三等号, 搞得我都不好意思要求双等号了,
    不过我是纯 ts ,

    nicenight

    75

    nicenight      2025 年 12 月 31 日

    只要你不用单等号,我都能接受。你要是像我同事一样用单等号做判断,那我就要放狗了

    craftsmanship

    78

    craftsmanship      1 月 1 日 via Android

    @Aliceeeeee 同时 null 和 undefined 的语义是不一样的 这种 billion dollar mistake 你要不要了解下再写 JS ?

    SanjinGG

    79

    SanjinGG      1 月 1 日 via Android

    @june4 没见过,初始化大部分也是赋值空字符串,根本不会给 null ,undefined 也只有在开发阶段会出现,到最终上线根本不会让他是 undefined

    liuxue

    80

    liuxue      1 月 1 日

    自己写的代码不用,别人的代码逻辑简单的,能找到类型的就换掉。

    goodboy95

    81

    goodboy95      1 月 3 日 via Android

    没这个胆子用双等号。
    顺便,对于你说的这种“判断是否不存在有效值”,我们一般直接!a

    kenvix

    82

    kenvix      1 月 3 日

    有一种情况可以安全使用==,就是判断是否为 null 或 undefined ,这种情况我都是这样做的,没有任何问题。
    对于==,null 只 与 undefined 相等,null 不会与任何其他值相等

    kenvix

    83

    kenvix      1 月 3 日

    @evan1 #5 你这个是重大错误,if (value)会导致 0 和空串被判为 false ,比==还危险

    NerbraskaGuy

    84

    NerbraskaGuy      1 月 4 日

    无脑用===的遇到后端接口明明规定是 1 实际给'1',而且不同接口 string 和 number 看心情来,这种的就老实了

    humbass

    85

    humbass      1 月 5 日

    都没讲到重点,实际上浏览器的环境有关。

    前端表单的内容都是 字符串,当后端数据一起计算拼接的时候, === 就不是很方便,因此 == 就派上用场了。
    比如 input 的年龄,if (age == 18) ,这里的 age 实际上是 String, 引擎自己转了,非要用 === 比较,你得 parseInt(age) === 18 ,代码太丑了。

    BetterJason

    87

    BetterJason      1 月 5 日

    @GuguDan #32 这种就是后端太垃圾导致的后果,要吗都用 0 要吗都用“0”, 一会儿这样 一会儿那样, 这种人就是把代码当儿戏,我现在接手的项目里面就是这样,导致出了很多问题,特别恶心人!