面试的时候看到的一些细节问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
AshoneA
V2EX    程序员

面试的时候看到的一些细节问题

  • &bsp;
  •   AshoneA 2019 年 3 月 15 日 7360 次点击
    这是一个创建于 2525 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天面试一位前端的时候,给他出了道题目让他写点代码,答案没写出来也没什么,就是发现面试的人在判断两个值是否相等的时候居然用的是==而不是===,个人感觉只要写 JS 超过半年以上应该会很习惯的用===去判断,==几乎是不会用到的一个判断符号(而且 eslint 大部分的规则都会直接提示==是不合法的)。面试的人在我心中就感觉是个基本不怎么写代码的人...而且简历上的一些项目百度了一下居然能出来个好几页,这是培训出来的吗?还是我的判断有误,请各位指教一下

    第 1 条附言    2019 年 3 月 16 日
    谢谢各位的意见哈,怪我没有说清楚吧,其实本来是出了道类似排序难度的算法题目给他做,只是看到他代码中有一段判断值的时候用的是==,并不是专门考察==和===的区别哈。如果他这个题目没有解出来我就会去看下他的代码规范之类的,因为总要看到面试者有没有可取之处嘛,如果题目没有做出来规范我觉得也很 OK。
    如果因为说了用==的代码不好惹到了用==的老哥,表示抱歉了。
    46 条回复    2019-03-17 12:02:25 +08:00
    zealot0630
        1
    zealot0630  
       2019 年 3 月 15 日 via Android
    说不定人家是 coffee/dart 出身呢
    AshoneA
        2
    AshoneA  
    OP
       2019 年 3 月 15 日
    @zealot0630 不是的哈,一直都是写前端的呢
    zbinlin
        3
    zbinlin  
       2019 年 3 月 15 日
    过去就过去了,没必要揪着别人不放。
    akatquas
        4
    akatquas  
       2019 年 3 月 15 日 via iPhone
    考察原理,不要纠结语法细节
    akiakiseofficial
        5
    akiakiseofficial  
       2019 年 3 月 15 日 via iPhone
    楼上说不要纠结语法细节的,我觉得如果语法细节不做好,到时候入职了写的也是垃圾代码。
    zhoufenfens
        6
    zhoufenfens  
       2019 年 3 月 15 日
    完了,写==的都写的是垃圾代码
        7
    AshoneA  
    OP
       2019 年 3 月 16 日   1
    @akatquas 我觉得这不是语法细节吧,如果写 JS 半年以上一直有在写,完全不会去思考就会去写===的
    zhuangzhuang1988
        8
    zhuangzhuang1988  
       2019 年 3 月 16 日   1
    谭浩强式题目
    AshoneA
        9
    AshoneA  
    OP
       2019 年 3 月 16 日
    @zhuangzhuang1988 如果他都能写出来答案我是不会纠结这个的,关键是他没写出来只能看看他代码其他地方有没有可取之处了呀
    akatquas
        10
    akatquas  
       2019 年 3 月 16 日 via iPhone
    @xlui 你有考虑降低闭包开销嘛?
    Sparetire
        11
    Sparetire  
       2019 年 3 月 16 日 via Android
    @akatquas 偶尔会考虑。。尤其是事件绑定的时候,如果没有引用其他外部变量,能通过 this 拿到的值,就不会通过函数外部实例拿了,不过感觉多数人没这习惯
    Perry
        12
    Perry  
       2019 年 3 月 16 日
    语法细节上班的时候完全可以用 linting 解决,同意楼上考原理的说法。
    不过确实这些细节容易会让面试官减分
    Cbdy
        13
    Cbdy  
       2019 年 3 月 16 日 via Android
    用==的很不专业,建议谨慎录用
    JK9993
        14
    JK9993  
       2019 年 3 月 16 日 via iPhone
    注意题主是说判断两个值是否相等的条件,这样子用两等当然不靠谱,但是其他情况我觉得能接受吧
    JK9993
        15
    JK9993  
       2019 年 3 月 16 日 via iPhone
    嗯,好像说了废话……我意思是说如果是出题的判断两个值是否相等
    fakeshadow
        16
    fakeshadow  
       2019 年 3 月 16 日
    我偶尔也会写错,因为不是只写 js,从其他语言突然转换过来不适应。
    stillsilly
        17
    stillsilly  
       2019 年 3 月 16 日 via iPhone
    我们公司后台传长得像数字的值(数量、id、用 01 表示的布尔)时精神错乱,完全不看这个字段的含义应该用什么,很随机地一会儿用数字,一会儿用字符串…

    我勤快的时候用 String Number 强转一下===,不勤快的时候就直接==了…
    yinjunjian0
        18
    yinjunjian0  
       2019 年 3 月 16 日
    有时后端传过来的是字符串 1 或者数字 1
    你不确定的话
    那用==好
    还是写两行===和转换下再===好呢
    zqx
        19
    zqx  
       2019 年 3 月 16 日 via Android
    感觉==还是有使用场景的
    zhzbql
        20
    zhzbql  
       2019 年 3 月 16 日
    大部分进行判断相等的情况下类型都是可预期的,用==有什么问题?在类型不可预期的情况下才用=== 。我就是这样,不要问为什么,问就是一个字,懒,可以少打一个=号
    murmur
        21
    murmur  
       2019 年 3 月 16 日
    三等号一般我只用在 0 null undefined 这些值上 至于 string 算了吧 多打一个难受
    meteor957
        22
    meteor957  
       2019 年 3 月 16 日
    工作不够饱和吗,一个三等号你纠结半天,还跑来专门发帖?面试完了就完了,谁也不认识谁。

    “==几乎是不会用到的一个判断符号”,你确定?
    lodash 源码中有不少==,null == undefined,在判错的时候能省去多余的判断
    Malthael
        23
    Malthael  
       2019 年 3 月 16 日   1
    你这算啥,我一个同事还写 if(xxx() == true) 呢。
    qshu
        24
    qshu  
       2019 年 3 月 16 日
    @Malthael 哈哈哈,去掉== true 也可以呀
    qshu
        25
    qshu  
       2019 年 3 月 16 日
    我发现我的确是 越来越习惯用 === 了
    learnshare
        26
    learnshare  
       2019 年 3 月 16 日
    === 的要求还是要坚持的,写过一段时间代码的话,应该会有被坑的时候
    宁愿手动转类型,也别占自动转换的便宜
    dying4death
        27
    dying4death  
       2019 年 3 月 16 日
    @Malthael 不太懂前端那一套是怎么样
    这样的写法在 java,kt 中我就经常用,lol
    因为其实 xxx()可能会返回空的情况,所以判断是否等于 true 还是有必要的,除非你说完全百分百返回布尔值
    itkdqwzero
        28
    itkdqwzero  
       2019 年 3 月 16 日 via iPad
    在小公司 多语言切换是常见的,我转行做 C++有两年了,都忘了这一茬。不用===也是什么都能实现,你这样面试对自学转行的新手太不友好,你觉得这很重要?很多实习生 for 循环都不会
    QiaTia
        29
    QiaTia  
       2019 年 3 月 16 日
    完了完了 平时根本不咋用 === ,
    鬼晓得后端会不会传一个字符型的数字来!
    xiangyuecn
        30
    xiangyuecn  
       2019 年 3 月 16 日
    表示只会用到===true ===false,其他大部分用==,非要有不确定类型的地方(+num||0) (""+str) 转换成明确的类型在比较。除了字符串就是数值了吧。另外表示 js 的判断逻辑很强大,很简洁。

    最后反正怎么写,==也好===也好,该出问题的地方还是会出问题。
    peneazy
        31
    peneazy  
       2019 年 3 月 16 日 via iPhone
    js 权威指南里面大量使用==,以跳过 null 和 undefined 的判断。后端不靠谱的时候,也需要使用==
    godgc
        32
    godgc  
       2019 年 3 月 16 日
    三等和两等 基本都要看使用场景,虽说是推荐===,但是有些场景 比如后端返回的 data number 和前端进行校验时 前端会转为 string,所以说还是要看场景吧
    Ley
        33
    Ley  
       2019 年 3 月 16 日 via Android
    惊了,这贴的风向和预想的大相径庭…
    支持楼主的观点,不考虑是不是培训班,会觉得这类细节无所谓的很可能水平有限… 当然如果是特殊情况特别考虑才这么写的另当别论。
    xiaxiaokang
        34
    xiaxiaokang  
       2019 年 3 月 16 日
    你题目没有标注是否类型相等,出题应该是:判断两个变量值相等且类型相等。
    所有你出题有问题。判断两个值是否相等==是可以的。
    作为 js==和===无非是(值相等)和(值和类型相等)
    ayase252
        35
    ayase252  
       2019 年 3 月 16 日 via iPhone
    尽量用===

    必须用==的情况的话个人感觉应该留个注释,阐明使用的理由。
    GX88624
        36
    GX88624  
       2019 年 3 月 16 日
    数据类型可预知我都是== 能省点省点, 不可预知和易出问题才===
    yuanfnadi
        37
    yuanfnadi  
       2019 年 3 月 16 日
    eslint 规则配置 禁止 '=='
    darknoll
        38
    darknoll  
       2019 年 3 月 16 日
    这就跟写一个算法,不判断传入的值是否为空一个性质。
    稍微好点的公司当然是直接 pass 了。
    GM
        39
    GM  
       2019 年 3 月 16 日
    不注意细节的人,招进来后很可能给你写一大堆功能看起来能用,但是实际上质量很低的代码,你愿意要这种人?
    meszyouh
        40
    meszyouh  
       2019 年 3 月 16 日 via Android   1
    接数据的时候,刚入门的时候用 === .出了几个莫名其妙的 bug 后,长心了,与后台传过来的数据判断 用 ==,心情好转换一下
    hirasawayui
        41
    hirasawayui  
       2019 年 3 月 16 日
    @yinjunjian0 1 和 '1' ,一般用 + 强制转换成数字
    doommm
        42
    doommm  
       2019 年 3 月 16 日
    == 我只用来判断 null 和 undefined,number 和 string 的判断还是显示转换一下比较好
    qiannianfozhan
        43
    qiannianfozhan  
       2019 年 3 月 17 日 via Android
    我笔试也写的==,中枪
    qfdk
        44
    qfdk  
    PRO
       2019 年 3 月 17 日 via iPhone
    @Malthael 老哥 你还好 维护 2008 年的项目 全是这样 哭笑不得
    fsdgfd
        45
    fsdgfd  
       2019 年 3 月 17 日
    1. 好奇你们对 Object.is 怎么看
    2. 好奇你们对下图中的观点怎么看

    DavidNineRoc
        46
    DavidNineRoc  
       2019 年 3 月 17 日
    判断值相等不用 == 用 === ?
    == 就是用来判断值相等的不是?
    === 是用来判断恒等的.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2488 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 10:52 PVG 18:52 LAX 02:52 JFK 05:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86