JavaScript:会破坏什么,会破坏什么?

时间:2011-10-07 08:18:29

标签: javascript resources unobtrusive-javascript

Potentially dangerous code below, line 2
Repeat: POTENTIALLY DANGEROUS CODE BELOW

var history = ""; 
for (start = 3; start = 1000; start += 1){
  if(start % 5 == 0 || start % 3 == 0) 
    history += start + " "; }

好的,这是我第四次将JavaScript代码放入浏览器中。这让我的电脑震惊了。这些惊恐发作是否会破坏她的心脏?在我继续学习和练习JavaScript时,我在哪里可以了解可能会破坏我的计算机的所有废话?我正在寻找一份详尽的清单。

4 个答案:

答案 0 :(得分:7)

您的循环for (start = 3; start = 1000; start += 1){
for( ; ; )循环的第二部分是条件测试。循环将继续,直到第二部分评估为false 。要不创建无限循环,请将代码更改为:

for (var start = 3; start < 1000; start += 1){

注意:start+=1等于start++。如果您需要紧凑的代码,可以将+=1替换为++

三部分for - 循环的概述,for(initialise; condition; increment)

  • initialise - 创建变量(允许为空)
  • condition - 一旦此表达式求值为false,循环将停止
  • increment - 此表达式在循环结束时执行 始终检查无限循环:确保条件能够评估为false

常犯的错误:

  • 负增量表达式与低于的比较结合:
    i--会减少计数器,因此i<100 始终为真(除非变量i初始化为100)
  • 高于比较的正增量表达式。
  • 非递增式表达式:for(var i=0,j=0; i<100; j++)i不会增加)
  • 始终为真的条件(例如在您的情况下)

答案 1 :(得分:4)

您只需要正确地学习和阅读它。您的循环条件start = 1000将始终评估为true,这就是循环永远不会终止的原因(赋值返回已分配的值,而0以外的任何其他数字的计算结果为{{1} })。

MDN JavaScript Guide是学习JavaScript的绝佳资源。特别针对这种情况:

  

for循环重复,直到指定的条件计算为false。 JavaScript for循环类似于Java和C for循环。 for语句如下所示:

true
     

执行for循环时,会发生以下情况:

     
      
  1. 执行初始化表达式for ([initialExpression]; [condition]; [incrementExpression]) statement (如果有)。此表达式通常初始化一个或多个循环计数器,但语法允许表达任何程度的复杂性。该表达式也可以声明变量。
  2.   
  3. 评估initialExpression表达式。如果condition的值为true,则执行循环语句。如果condition的值为false,则condition循环终止。如果完全省略for表达式,则假定条件为真。
  4.   
  5. 声明执行。要执行多个语句,请使用块语句(condition)对这些语句进行分组。
  6.   
  7. 更新表达式{ ... }(如果有)执行,控制权返回步骤2.
  8.   

正如其他人所说,它主要归结为尝试和错误....这是一种很好的学习方式。

答案 2 :(得分:1)

您的条件语句 start = 1000 将始终返回true。你无法找到这样的傻瓜证明清单,你必须自己从这些错误中吸取教训。

答案 3 :(得分:-1)

呃 - 你在这里想要什么?

for (start = 3; start = 1000; start += 1)
你想要这个吗? (从3到1000)

for (start = 3; start <= 1000; start += 1)

在第一种情况下,你会坚持1000