什么时候应该阅读/理解算法&编程逻辑变得不困难

时间:2010-12-12 23:06:59

标签: javascript algorithm programming-languages

我已经学习了一个半星期的JS教程(Lynda.com和HeadFirst系列)。事情很普遍,但JS对我来说并不像HTML / CSS那么容易。当我看到非常简单,初学者,代码(例如Lynda.com的教程,你创建一个宾果卡),我很难真正阅读代码的逻辑参数表示。我的猜测是,如果我没有解决这个问题,那么我试图学习的任何其他语言都是不可能的,更不用说我不会很好地学习JS了 - 或者根本就没有。

那么有人可以推荐一本提供有关算法的基本指导的书籍/网站吗? ,我只是太急躁了几个星期后,事情应该解决,代码会更有意义。

以下是仍然预先准备的愚蠢基本代码的示例。

function newCard() {
    if (document.getElementById) {
        for (var i=0; i<24; i++) {
            setSquare(i);
        }

4 个答案:

答案 0 :(得分:6)

HTML / CSS是文档描述语言,一种表示视觉结构和信息的方式,它们不是编程语言。

JavaScript本身并不一定是一种简单的语言,所以请放轻松,你可以使用初级编程入门书。

尝试按顺序将您正在阅读的内容逐行转换为英语。语法,符号和编写方式可能是混淆的主要原因,因为您不熟悉它们。那些不习惯代数恐慌的人在看到它时会发出“我永远不明白,你怎么读它?”的呼喊。 - 及时你会习惯。

拿一下这段简单的代码:

1 for (var i=0; i<24; i++) {
2    setSquare(i);
3 }

第1行:“for-loop”

循环是一段代码(用大括号{}表示),重复到某一点。在for循环的情况下,有3个控制循环的设置(参数)。

第一个用于初始化,启动条件,在这种情况下,将新变量i设置为0i=0

第二个是条件它告诉循环是否继续运行并在每次循环重新开始时检查。这里的条件为i < 24,在变量i小于(<)24时继续运行。

最后一部分是一个增量,无论最后一部分发生什么,每个列表都会发生一次。在这种情况下,在列表的末尾,在下一个循环之前。 i++表示将i增加1,i = i + 1的简写。

因此循环运行多次,i从0开始,每次增加1,一旦不再小于24,即。到了24,它结束了。所以代码块执行24次,i = 0 to 23

第2行:循环内部是一个名为setSquare的函数的单个语句,即函数调用,每次都会传递值i

第3行:for循环的右括号。

总而言之,此代码使用setSquare()的值调用0 to 23函数24次。

setSquare()在没有看到该代码的情况下所做的事情是个谜。

答案 1 :(得分:2)

回答你的问题

在我看来,你在使用基本的编程结构时遇到了一些问题,例如函数,循环,变量声明等等 - 如果你不理解那些你就不会理解任何代码 at所有。所以我的建议是拿一本关于编程的书(最好是关于Javascript,在你的情况下)。我从来没有从书中学过JS,因为我已经有了编程背景所以主要概念已经存在,但是我的一个朋友喜欢O'Reilly Head First Javascript。然后,当学习语言的主要概念时,请查看jQuery库。

另外,两个快速说明:

  1. HTML和CSS不是编程语言
  2. 您不需要关心算法,至少目前是这样 - 算法是一系列旨在解决特定问题的复杂过程,而不是用于迭代数组的简单for循环: )

答案 2 :(得分:2)

你发现学习JavaScript比其他两个更困难,因为它是一种编程语言,其中CSS和HTML是标记/样式。

JavaScript也不是一门容易学习的第一语言。如果你发现自己感到困惑,我不会太担心,编程很难,而且并不是每个人都能自然而然。最终,你的心态会发生变化,起初看起来不可能的事情看起来会非常直观。

话虽如此,学习JavaScript的初学资源很少。你最好的办法是看一本像Head First JavaScript这样的书。他们将通过如何编程(编写算法来解决问题的心态)进行非常缓慢的进展,并向您介绍JavaScript的所有功能。

抬起头来:)。

答案 3 :(得分:0)

我希望你对for-loop没有问题,因为这是编程的基础。

1 for (var i=0; i<24; i++) {
2   setSquare(i);
3 }

1 for (var i=0; i<24; i++) { 2 setSquare(i); 3 }

为了跟进@ Orbling的详细答案,第2行揭示了该计划的要点。假设表示它所说的内容,for循环显然具有在for循环中将square的状态更改为i的当前值的副作用。我的猜测是,方块的宽度随i而变化。

我提到的关键团队是“副作用”,这意味着程序将影响其他实体的状态。以下for循环也有副作用。

setSquare(i)

1 for (var i=0; i<24; i++) {
2   print(i);
3 }

我将在其中规定1 for (var i=0; i<24; i++) { 2 print(i); 3 } 将在JS弹出窗口中呈现的值。