【发布时间】:2020-09-25 19:05:40
【问题描述】:
所以我正在研究一个函数,它将任何东西作为参数,控制台将它记录在一个盒子或一个单元格中。这就是我想出的:
var horiz='━';
var vert='┃';
var ulcor='┏';
var urcor='┓';
var blcor='┗';
var brcor='┛';
//create a cell/box
var cell=(d='')=>{
let h='';
if(d==undefined||d==null){
throw('cell needs an argument');
}
len=d.toString().length;
for(i=0;i<3;i++){
if(i==0){
for(j=0;j<len;j++){
h+=horiz;
}
if(i==0) console.log(ulcor+h+urcor);
}
if(i==1){
console.log(`${vert}${d}${vert}`);
}
if(i==2){
console.log(blcor+h+brcor);
}
}
}
现在当我测试这个时,我做了以下操作
cell('index');
cell(1);
给出以下输出:
┏━━━━━┓
┃index┃
┗━━━━━┛
┏━┓
┃1┃
┗━┛
并且还进行了其他测试,并且在我进行以下测试之前效果很好:
for(i=0;i<5;i++){
cell(i)
}
上面的代码应该给我带有1,2,3,4 的单元格/框,但是这给了我一个无限循环,我注意到它只打印了 4 个(不是 1,2 或 3)但无限次的单元格。
现在是有趣的部分。当我执行以下操作时:
n=1;
while(n<10){
cell(n);
n+=1;
}
上面的代码给出了预期的结果并且工作正常。
诡异的!!只是无法弄清楚为什么当我在for loop 中使用它时它会无限运行,但while loop 效果很好。如果代码中需要任何改进,请务必提及:)
【问题讨论】:
-
你在for循环版本中使用了全局变量
i。 -
JS 中的变量应始终使用 let 或 const 定义。尤其是在 for 循环中
for (let i = 0; ... -
在严格模式下运行您的代码,它应该会告诉您您遇到的编码问题。如果您不了解严格模式,请read 了解它。您的代码在“草率模式”下运行,而您为此付出了代价。
标签: javascript node.js loops for-loop while-loop