打开网易新闻 查看精彩图片

100行代码里藏着7个死循环陷阱,新手在控制台前面崩溃的次数,比相亲失败还多。

这不是什么高级算法课,就是最基础的数字处理——能被3整除吗?是质数吗?找因数有几个?——但80%的面试挂科都栽在这些"简单题"上。我见过太多简历写着"精通JavaScript"的人,在while循环里把count++放错位置,然后盯着黑屏怀疑人生。

坑位一:把count++关进if的牢房

第一个程序,找1到99里能被3和5同时整除的数。代码看着人畜无害:

let count = 1; while(count < 100){ if((count % 3 == 0) && (count % 5 == 0)){ console.log(count) } count++ }

但新手最常干的,是把count++塞进if的大括号里。结果呢?一旦某个数不满足条件,count就永远卡在那里,浏览器风扇狂转,页面假死。这道理就像电梯门——你得保证每层都按关门键,而不是只在有人进出的时候才按。

输出很干净:15, 30, 45, 60, 75, 90。六个数,但背后是对循环控制流的理解。

坑位二:||和&amp;&amp;的脾气完全不一样

坑位二:||和&amp;&amp;的脾气完全不一样

打开网易新闻 查看精彩图片

第二个程序只改了一个符号:把&&换成||,找能被3或5整除的数。逻辑门在这里露馅了——&&要两边都点头,||只要一边答应

输出从6个数变成47个数。面试时如果面试官问你"优化空间",能答出"用数学方法直接生成而非遍历"的,和只能写出循环的,工资档位差一档。

但新手阶段,先把循环写对。我见过有人把||写成单个|,那是位运算,结果全乱。

坑位三:因数和因数个数是两道题

第三个程序找因数,第四个程序数因数有几个。差别只在一行count++,但放的位置天差地别。

找因数的时候,count++要放在if外面——你得遍历所有候选。数因数的时候,count++要放在if里面——只有命中的时候才计数。这个细节,我带的实习生里有一半第一次会搞反。

给定数字20,因数是1, 2, 4, 5, 10, 20,共6个。程序跑完,控制台先打印六个数,最后告诉你"6"。如果顺序错了,你会得到20或者0,然后调试两小时。

坑位四:质数判断的隐藏复杂度

打开网易新闻 查看精彩图片

第五个程序是质数检查。代码框架和前两个几乎一样,但逻辑重音变了:因数个数等于2的才是质数。

给定数字9,因数有1, 3, 9,count最后是3,所以不是质数。给定数字7,因数只有1和7,count等于2,质数成立。

但这里埋着一个性能炸弹:这个算法是O(n)的。面试进阶版会问,能不能只遍历到平方根?如果能答出来,说明你不只是抄代码,真理解数学了。

不过新手先把基础版写稳。我见过太多人还没学会走,就想用埃拉托斯特尼筛法,结果筛出一堆undefined。

为什么这些"幼稚题"还在考

为什么这些"幼稚题"还在考

这五个程序加起来不到50行,但覆盖了JavaScript最核心的几个概念:变量作用域、循环控制流、条件判断、取模运算、逻辑运算符。每一个都是日常开发的基建。

更隐蔽的是,它们在训练一种思维方式:把数学语言翻译成代码语言。"能被3整除"变成count % 3 == 0,"且"变成&&,"或"变成||。这种翻译能力,决定了你以后看需求文档是秒懂还是懵圈。

我见过工作三年的前端,写不出一个正确的质数判断。不是不会,是从来没认真写过。框架用得太顺手,底层逻辑全交给Google。

你现在能不看参考,15分钟内写出这五个程序吗?