循环后门的JavaScript?
棘手的是:循环后门的JavaScript?,javascript,for-loop,Javascript,For Loop,棘手的是: <!DOCTYPE html> <html> <body> <p id="demo"></p> <script> var cars = ["BMW", "Volvo", "Saab", "Ford"]; var i = 0; var text = ""; for (;cars[i];) { text += cars[i] + "<br>"; i++; } document.getE
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";
for (;cars[i];) {
text += cars[i] + "<br>";
i++;
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
发件人:
For循环的语句2不是用来求值的吗?如果它为false,则终止循环?语句2不是布尔类型吗?它如何像For/In循环一样使用
我需要帮助,谁知道这件事的来龙去脉?这应该是后门功能吗
我有眼睛,我知道它现在存在,不要告诉我它只是存在,但它是如何工作的?这当然很奇怪,但没有什么神奇的事情发生。在正常for循环中: 因此,在您发布的代码中:
for (/*some intialization*/; /*some check, which if falsy, exits the loop*/, /* Something that happens at the end of each loop*/) {
//do stuff
}
一旦我变为4,汽车[i]将返回未定义,这是错误的,循环将退出。这当然很奇怪,但没有什么神奇的事情发生。在正常for循环中: 因此,在您发布的代码中:
for (/*some intialization*/; /*some check, which if falsy, exits the loop*/, /* Something that happens at the end of each loop*/) {
//do stuff
}
一旦i变为4,cars[i]将返回undefined,这是falsy,循环将退出。这是有效的,因为当循环到达cars[4]时,它将计算为undefined,因为索引4超出了数组中的最后一个元素。由于考虑未定义,循环终止 尝试运行以下命令: 如果没有定义{ 日志“这将永远不会执行”; } 否则{ 日志“这将始终执行”;
} 这是因为当循环到达cars[4]时,它将计算为未定义,因为索引4超出了数组中的最后一个元素。由于考虑未定义,循环终止 尝试运行以下命令: 如果没有定义{ 日志“这将永远不会执行”; } 否则{ 日志“这将始终执行”; } 查看if选项卡下的表,看看if false和'if undefined'如何计算相同的值。当您的索引超出范围时,它返回未定义的,这是有条件的false 查看if选项卡下的表,看看if false和'if undefined'如何计算相同的值。当您的索引超出范围时,它返回未定义的,这是有条件的false。不是用于求值和 如果循环为false,则终止循环?-对 您可以在此处找到更多详细信息: 将计算条件表达式。如果条件的值为 如果为true,则执行循环语句。如果条件的值为false, for循环终止。如果省略了条件表达式 总的来说,假设该条件为真 示例:如果数组中的任何项都有值项 循环停止 var汽车=[宝马、萨博、福特]; var i=0; var text=; 对于汽车[我];{ 控制台.行车日志[i]; i++; } For循环的语句2不是用来求值和 如果循环为false,则终止循环?-对 您可以在此处找到更多详细信息: 将计算条件表达式。如果条件的值为 如果为true,则执行循环语句。如果条件的值为false, for循环终止。如果省略了条件表达式 总的来说,假设该条件为真 示例:如果数组中的任何项都有值项 循环停止 var汽车=[宝马、萨博、福特]; var i=0; var text=; 对于汽车[我];{ 控制台.行车日志[i]; i++;
}请不要使用像WTF on stack overflow这样的词…您需要理解和使用javascriptWow,这非常有意义,suraj。我想JavaScript有truthy和falsy是一个相当有用的遗产,但它确实使语言的任务不那么关键。请不要在堆栈溢出上使用WTF之类的词…你需要理解javascriptWow,这很有意义,suraj。我想JavaScript有truthy和falsy是一个相当有用的遗产,但它确实使语言不那么关键。cars[0]是宝马,它是truthy,计算结果为TrueThy。是的,这是真的-请参阅@suraj对您的问题的非常相关的评论-虽然它可能不是布尔值,但它是truthy,这是Javascript中的一个东西。如果您不习惯Javascript中的自动类型转换,它可能会让您感到不安,但如果小心处理,它可以让您做一些聪明的事情。cars[0]是BMW,它是truthy,计算结果为TrueThy。是的,这是真的-请参阅@suraj对您的问题的非常相关的评论-虽然它可能不是布尔值,但它是truthy,这是Javascript中的一个东西。如果您不习惯Javascript中的自动类型转换,它可能会让您感到不安,但如果仔细处理,它可以让您做一些聪明的事情。
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";
for (/*no init*/;cars[i];/*is in the loop instead*/) {
text += cars[i] + "<br>";
i++; // this would generally be the third expression in the loop parens
}
for ([initialExpression]; [condition]; [incrementExpression])
statement