
今天面试一位前端的时候,给他出了道题目让他写点代码,答案没写出来也没什么,就是发现面试的人在判断两个值是否相等的时候居然用的是==而不是===,个人感觉只要写 JS 超过半年以上应该会很习惯的用===去判断,==几乎是不会用到的一个判断符号(而且 eslint 大部分的规则都会直接提示==是不合法的)。面试的人在我心中就感觉是个基本不怎么写代码的人...而且简历上的一些项目百度了一下居然能出来个好几页,这是培训出来的吗?还是我的判断有误,请各位指教一下
1 zealot0630 2019 年 3 月 15 日 via Android 说不定人家是 coffee/dart 出身呢 |
2 AshoneA OP @zealot0630 不是的哈,一直都是写前端的呢 |
3 zbinlin 2019 年 3 月 15 日 过去就过去了,没必要揪着别人不放。 |
4 akatquas 2019 年 3 月 15 日 via iPhone 考察原理,不要纠结语法细节 |
5 akiakiseofficial 2019 年 3 月 15 日 via iPhone 楼上说不要纠结语法细节的,我觉得如果语法细节不做好,到时候入职了写的也是垃圾代码。 |
6 zhoufenfens 2019 年 3 月 15 日 完了,写==的都写的是垃圾代码 |
8 zhuangzhuang1988 2019 年 3 月 16 日 谭浩强式题目 |
9 AshoneA OP @zhuangzhuang1988 如果他都能写出来答案我是不会纠结这个的,关键是他没写出来只能看看他代码其他地方有没有可取之处了呀 |
11 Sparetire 2019 年 3 月 16 日 via Android @akatquas 偶尔会考虑。。尤其是事件绑定的时候,如果没有引用其他外部变量,能通过 this 拿到的值,就不会通过函数外部实例拿了,不过感觉多数人没这习惯 |
12 Perry 2019 年 3 月 16 日 语法细节上班的时候完全可以用 linting 解决,同意楼上考原理的说法。 不过确实这些细节容易会让面试官减分 |
13 Cbdy 2019 年 3 月 16 日 via Android 用==的很不专业,建议谨慎录用 |
14 JK9993 2019 年 3 月 16 日 via iPhone 注意题主是说判断两个值是否相等的条件,这样子用两等当然不靠谱,但是其他情况我觉得能接受吧 |
15 JK9993 2019 年 3 月 16 日 via iPhone 嗯,好像说了废话……我意思是说如果是出题的判断两个值是否相等 |
16 fakeshadow 2019 年 3 月 16 日 我偶尔也会写错,因为不是只写 js,从其他语言突然转换过来不适应。 |
17 stillsilly 2019 年 3 月 16 日 via iPhone 我们公司后台传长得像数字的值(数量、id、用 01 表示的布尔)时精神错乱,完全不看这个字段的含义应该用什么,很随机地一会儿用数字,一会儿用字符串… 我勤快的时候用 String Number 强转一下===,不勤快的时候就直接==了… |
18 yinjunjian0 2019 年 3 月 16 日 有时后端传过来的是字符串 1 或者数字 1 你不确定的话 那用==好 还是写两行===和转换下再===好呢 |
19 zqx 2019 年 3 月 16 日 via Android 感觉==还是有使用场景的 |
20 zhzbql 2019 年 3 月 16 日 大部分进行判断相等的情况下类型都是可预期的,用==有什么问题?在类型不可预期的情况下才用=== 。我就是这样,不要问为什么,问就是一个字,懒,可以少打一个=号 |
21 murmur 2019 年 3 月 16 日 三等号一般我只用在 0 null undefined 这些值上 至于 string 算了吧 多打一个难受 |
22 meteor957 2019 年 3 月 16 日 工作不够饱和吗,一个三等号你纠结半天,还跑来专门发帖?面试完了就完了,谁也不认识谁。 “==几乎是不会用到的一个判断符号”,你确定? lodash 源码中有不少==,null == undefined,在判错的时候能省去多余的判断 |
23 Malthael 2019 年 3 月 16 日 你这算啥,我一个同事还写 if(xxx() == true) 呢。 |
25 qshu 2019 年 3 月 16 日 我发现我的确是 越来越习惯用 === 了 |
26 learnshare 2019 年 3 月 16 日 === 的要求还是要坚持的,写过一段时间代码的话,应该会有被坑的时候 宁愿手动转类型,也别占自动转换的便宜 |
27 dying4death 2019 年 3 月 16 日 @Malthael 不太懂前端那一套是怎么样 这样的写法在 java,kt 中我就经常用,lol 因为其实 xxx()可能会返回空的情况,所以判断是否等于 true 还是有必要的,除非你说完全百分百返回布尔值 |
28 itkdqwzero 2019 年 3 月 16 日 via iPad 在小公司 多语言切换是常见的,我转行做 C++有两年了,都忘了这一茬。不用===也是什么都能实现,你这样面试对自学转行的新手太不友好,你觉得这很重要?很多实习生 for 循环都不会 |
29 QiaTia 2019 年 3 月 16 日 完了完了 平时根本不咋用 === , 鬼晓得后端会不会传一个字符型的数字来! |
30 xiangyuecn 2019 年 3 月 16 日 表示只会用到===true ===false,其他大部分用==,非要有不确定类型的地方(+num||0) (""+str) 转换成明确的类型在比较。除了字符串就是数值了吧。另外表示 js 的判断逻辑很强大,很简洁。 最后反正怎么写,==也好===也好,该出问题的地方还是会出问题。 |
31 peneazy 2019 年 3 月 16 日 via iPhone js 权威指南里面大量使用==,以跳过 null 和 undefined 的判断。后端不靠谱的时候,也需要使用== |
32 godgc 2019 年 3 月 16 日 三等和两等 基本都要看使用场景,虽说是推荐===,但是有些场景 比如后端返回的 data number 和前端进行校验时 前端会转为 string,所以说还是要看场景吧 |
33 Ley 2019 年 3 月 16 日 via Android 惊了,这贴的风向和预想的大相径庭… 支持楼主的观点,不考虑是不是培训班,会觉得这类细节无所谓的很可能水平有限… 当然如果是特殊情况特别考虑才这么写的另当别论。 |
34 xiaxiaokang 2019 年 3 月 16 日 你题目没有标注是否类型相等,出题应该是:判断两个变量值相等且类型相等。 所有你出题有问题。判断两个值是否相等==是可以的。 作为 js==和===无非是(值相等)和(值和类型相等) |
35 ayase252 2019 年 3 月 16 日 via iPhone 尽量用=== 必须用==的情况的话个人感觉应该留个注释,阐明使用的理由。 |
36 GX88624 2019 年 3 月 16 日 数据类型可预知我都是== 能省点省点, 不可预知和易出问题才=== |
37 yuanfnadi 2019 年 3 月 16 日 eslint 规则配置 禁止 '==' |
38 darknoll 2019 年 3 月 16 日 这就跟写一个算法,不判断传入的值是否为空一个性质。 稍微好点的公司当然是直接 pass 了。 |
39 GM 2019 年 3 月 16 日 不注意细节的人,招进来后很可能给你写一大堆功能看起来能用,但是实际上质量很低的代码,你愿意要这种人? |
40 meszyouh 2019 年 3 月 16 日 via Android 接数据的时候,刚入门的时候用 === .出了几个莫名其妙的 bug 后,长心了,与后台传过来的数据判断 用 ==,心情好转换一下 |
41 hirasawayui 2019 年 3 月 16 日 @yinjunjian0 1 和 '1' ,一般用 + 强制转换成数字 |
42 doommm 2019 年 3 月 16 日 == 我只用来判断 null 和 undefined,number 和 string 的判断还是显示转换一下比较好 |
43 qiannianfozhan 2019 年 3 月 17 日 via Android 我笔试也写的==,中枪 |
46 DavidNineRoc 2019 年 3 月 17 日 判断值相等不用 == 用 === ? == 就是用来判断值相等的不是? === 是用来判断恒等的. |