Javascript在for循环的通用语言中的翻译

时间:2015-12-04 09:10:14

标签: javascript for-loop null

这个功能来自“Eloquent Javascript”一书,第3章,功能。

我不明白剧本的行为。

这是一个“for循环”,其任务是使计数值等于0且小于0.

一开始我认为它会阻止程序,但程序很聪明。它如何跨越这个循环。 这是片段:

private async void button1_Click(object sender, EventArgs e)
{
    const int size = 5;
    int[] values = new int[size];

    int index = 0;
    string path = "nav.txt";

    StreamReader input = File.OpenText(path);
    while (index < values.Length && !input.EndOfStream)
    {
        values[index] = int.Parse(await input.ReadLineAsync());
        index++;
    }

    foreach (int value in values)
        listBox1.Items.Add(value);
}

repl.it中的输出

    var power = function (base, exponent) {
    var result = 1;
    for(var count = 0; count < exponent; count ++) {
//repeat as many as needed the self multiplication.
    console.log("count = ", count);
        result *= base;
        console.log(result);

    }
    return result;
};
console.log("finally we get the number ", power(2, 0));
/* A little question with exponent = 0 
Why is that not an error. It is impossible to initiate 
with count = 0 &&  count < exponent.
Weird.*/

2 个答案:

答案 0 :(得分:0)

因为count < exponent或更确切地说0 < 0false,所以循环不会运行,并且当result被定义为{1时,它会返回var result = 1; for(var count = 0; false; count ++) { // This doesn't run } return result; // So it's still 1 的值1}}:

CURSOR cFunnyCursor (
  v1 NUMBER,
  v2 NUMBER
) IS
SELECT * FROM TABLE
WHERE  col1  = v1
AND    col2 != v2
AND    col3  = CONSTANT;

答案 1 :(得分:0)

感谢fuyushimoya,我理解:

循环中的第一个语句出现在名为“result”,

的变量的初始化之后

我错误地认为for循环的括号内的文字意味着:

我们有一个计数值数组:[第一个是0,最后一个是指数-1]。 正如我在索引0处所说的那样,count项为“0”,并且该数组的长度为“exponent”。因此,如果数组为空,则该语句不能为真,因为索引0不存在,因为程序将被停止。

但现在我终于明白了:

for循环括号内的文字说: 如果count的最大值小于指数且小于0, 然后我们将结果的值增加到:result * base。 - 但是在电源(2,0)的情况下,条件未经验证,则没有增量。 称为“结果”的值仍处于初始状态,即在循环开始之前。