We hear a lot about loops, especially for loops. So what, in fact, are they? They’re just pieces of code that repeat the same commands several times, until you reach a desired conclusion, without getting you bored out of your mind, repeating your code. This is how we JavaScript guys do it.

Syntax

You will definitely have to know the syntax of for loops and that goes like this:

1 for ([initialization]; [condition]; [final-expression]) statement

You’ll see in the examples how each of these clauses is translated into code. So let’s start right away.

Using simple for loops

The most typical way to use for loops is counting. You just need to tell the loop where to start, where to finish, and with what pace to count. This is how the code goes for counting and printing in the screen odd numbers from one to ten:

1 for (var i = 1; i < 10; i+2) {
2     console.log(i);
3 }

According to the syntax structure we gave you above, you can now easily distinguish that we have first declared and initialized the variable with the value 1. We have set the condition, which in our case is to not count odd numbers greater than 10, and the final one is the pace, and since the two closest odd numbers only differ by 2 the final expression is i+2. Notice that we start the loop with an odd number.

Removing for loop’s clauses

One way to put for loops in good use would be to optimize them, by removing the expressions.Each one of them can be omitted, or you can even omit them all. We will be using the same code of the example above, only we’ll modify it according to the thing we want to show you, so that you can draw the differences and understand it more. Firstly, we’ll show you when and how can you remove the initialization expression. Have a look at the code to see how it changes:

1 var i = 1;
2 for (; i < 10; i+2) {
3     console.log(i);
4 }

You will definitely notice that we have removed the initialization expression, but the variable is initialized outside the loop before we write the code for the loop. Also what’s important here is that the place where the expression we removed was is still there, even though it’s now empty. It’s not correct to remove the semicolon saving that space.

Now it’s time to show you how to use a for loop with all three blocks removed. This is the code:

1 i=0;
2 for (;;) {
3     if (i > 3) break;
4     console.log(i);
5     i++;
6 }

You are obliged to declare an initialize the variable before writing the rest of the loop’s code. If you don’t want to put a condition or a way to get out of the loop, you would be building an infinite loop. But if this is not your intention then you will have to put a condition and an expression that changes the value of the variable, as we have done in the previous code snippet.

for loops and break;

If you were careful in watching the code snippets above you will see something that we did not explain: the expression break;. That expression is used to jump out of the loop, which means that it takes the command right after the loop, without executing the rest of it, but instead doing whatever code is next. Here’s an example of how you can use it:

1 var text = ""
2 var i;
3 for (i = 0; i < 10; i++) {
4     if (i == 3) {break;}
5     text += "The number is " + i + "<br>";
6 }

This code snippet prints out the value of the i variable, and increments it by one. When the value of i reaches 3, it breaks out of the loop. That is how the break; expression operates.

for loops and continue;

The continue; expression is similar to break; only this one only breaks out of the current iteration, and into the next one, not necessarily out of the loop. Here’s the modified example:

1 var text = ""
2 var i;
3 for (i = 0; i < 10; i++) {
4     if (i == 3) {continue;}
5     text += "The number is " + i + "<br>";
6 }

Instead of break; we have used continue; and the difference is that the next iteration to be executed is not the one after the loop, it’s the one after the iteration containing continue;.

for…in loops

The for...in loops are a way of iterating only the properties of different objects.It’s sytax is like this:

1 for (var variable in objectExpression) {statement}

Any expression that evaluates to an object can be used as objectExpression, and this object’s properties are the ones to be iterated. On each iteration, the property names are assigned to variables, and then the statement is executed.See the example below:

1 var myObj = {a: 1, b: 2, c: 3},
2     myKeys = [];
3   
4 for (var property in myObj) {
5     myKeys.push(property);
6 }
7   
8 myKeys;
9  
10 //['a','b','c'];

Note that the properties’ values are actually strings, so whatever action you want to do with, or on them in the statement block, you will have to think of them as such.

Using for with an empty statement

The awesome part about JavaScript is that almost every modification of the code leads you somewhere useful. That is the case with the following code, which we’d like you to see first and discuss later:

1 function showOffsetPos (sId) {
2  
3     // initialization
4     var nLeft = 0, nTop = 0;
5  
6     // condition
7     for (var oItNode = document.getElementById(sId);
8         // final-expression
9          oItNode;
10          nLeft += oItNode.offsetLeft,
11          nTop += oItNode.offsetTop,
12  
13           // empty statement
14          oItNode = oItNode.offsetParent) ;
15  
16     console.log("Offset position of \"" + sId + "\" element:\n left: "
17         + nLeft + "px;\n top: " + nTop + "px;");
18 }
19  
20 showOffsetPos("content");

This loop calculates the offset position of a node in the final-expression section, therefore making the use of a statement block useless, so the empty statement is used instead.

Download the source code

This was an example of for loops in JavaScript.

http://www.webcodegeeks.com/javascript/javascript-for-loop-example/

javascript-for-loop-example--reference的更多相关文章

  1. JavaScript : Array assignment creates reference not copy

    JavaScript : Array assignment creates reference not copy 29 May 2015 Consider we have an array var a ...

  2. JavaScript Event Loop和微任务、宏任务

    为什么JavaScript是单线程? JavaScript的一大特点就是单线程, 同一时间只能做一件事情,主要和它的用途有关, JavaScript主要是控制和用户的交互以及操作DOM.注定它是单线程 ...

  3. javascript event loop

    原文: https://blog.csdn.net/sjn0503/article/details/76087631 简单来讲,整体的js代码这个macrotask先执行,同步代码执行完后有micro ...

  4. JavaScript json loop item in array

    Iterating through/Parsing JSON Object via JavaScript 解答1 Your JSON object is incorrect because it ha ...

  5. javaScript Event Loop + NodeJs问题解析

    http://www.ruanyifeng.com/blog/2014/10/event-loop.html https://github.com/ElemeFE/node-interview/tre ...

  6. JavaScript event loop事件循环 macrotask与microtask

    macrotask  姑且称为宏任务,在很多上下文也被简称为task.例如: setTimeout, setInterval, setImmediate, I/O, UI rendering. mic ...

  7. 深入理解 JavaScript 事件循环(一)— event loop

    引言 相信所有学过 JavaScript 都知道它是一门单线程的语言,这也就意味着 JS 无法进行多线程编程,但是 JS 当中却有着无处不在的异步概念 .在初期许多人会把异步理解成类似多线程的编程模式 ...

  8. JavaScript事件循环(Event Loop)机制

    JavaScript 是单线程单并发语言 什么是单线程 主程序只有一个线程,即同一时间片断内其只能执行单个任务. 为什么选择单线程? JavaScript的主要用途是与用户互动,以及操作DOM.这决定 ...

  9. JavaScript 事件循环 — event loop

    引言 相信所有学过 JavaScript 都知道它是一门单线程的语言,这也就意味着 JS 无法进行多线程编程,但是 JS 当中却有着无处不在的异步概念 .在初期许多人会把异步理解成类似多线程的编程模式 ...

  10. JavaScript 风格指导(Airbnb版)

    JavaScript 风格指导(Airbnb版) 用更合理的方式写 JavaScript 原文 翻译自 Airbnb JavaScript Style Guide . 目录 类型 引用 对象 数组 解 ...

随机推荐

  1. 实现windows和linux的NFS交互

    说明:本文是Omni-NFS-X Windows与Linux间通讯的另一种方式和在windows中配置使用NFS客户端的杂交篇 概述 windows/winnt4.0/win2000与Linux/Fr ...

  2. 如何分析matlab程序的主要效率问题

    利用profile on 在需要分析效率的程序段前后加入 profile on profile off 然后,在common line中输入profile viewer即可观察到这段程序的效率

  3. 《Journey》风之旅人;

    俩个人在茫茫世界相遇,互不相识,却能互相取暖,一路旅程,看尽了美丽的风景,也共同经历了暴风雪,然而该来的人会来,该走的人会走,这不就是人生旅途?

  4. nutch 二次开发

    /*深度控制*/ 深度控制:nutch是广域网的深度遍历,我们需要的是垂直采集(即只采集某一个栏目),举例,索引页总计20页,如果只有下一页,则深度为20,如果是1 2 3 4 5……20则深度为2即 ...

  5. 转:char*, char[] ,CString, string的转换

    转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准 ...

  6. Tomcat 架构 (一)

    在实践过程中,从WebSphere中实现一个EJB的容器以及从WebLogic中实现一个JMS几乎都是不可能的,然而来自Apache基金会的servlet容器Tomcat至少在理论上是可能做到的. 请 ...

  7. java 伪共享

    MESI协议及RFO请求典型的CPU微架构有3级缓存, 每个核都有自己私有的L1, L2缓存. 那么多线程编程时, 另外一个核的线程想要访问当前核内L1, L2 缓存行的数据, 该怎么办呢?有人说可以 ...

  8. R统计软件真有意思哈,以后我怕要用得着,先自学

    呵呵,作数据分析是数据监控后的动作. 思路是用监控系统产生数据, 如果监控本身提供统计最好,如果不提供,则可以用R来作分析统计和预测. 如果数据不符合规范,则用PYTHON进行处理转换. ~~~~~~ ...

  9. 用状态机STATE MACHINE实现有选择的文件转换

    用书上的例子实现在解析HTML文本时,对"<>"中的符号不进行字符转换. import sys import string from optparse import O ...

  10. h.264宏块与子宏块类型

    宏块类型mb_type 宏块类型表示的是宏块不同的分割和编码方式,在h.264的语法结构中,宏块类型在宏块层(macroblock_layer)中用mb_type表示(请参考h.264语法结构分析中的 ...