gpt4 book ai didi

javascript - 有人可以向我解释一下为什么我们需要在这个函数中使用 for 循环吗?

转载 作者:行者123 更新时间:2023-11-28 15:27:40 25 4
gpt4 key购买 nike

我对编程比较陌生,今天正在阅读《Eloquent Javascript》一书。我遇到了一个与总体范围相关的示例。然而,我更感兴趣的是了解它们提供的功能中的所有元素。

这是函数:

var landscape = function () {
var result = "";
var flat = function (size) {
for (var count = 0; count < size; count++)
result += "_";
};
var mountain = function (size) {
result += "/";
for (var count = 0; count < size; count++)
result += "'"
result += "\\"
};

flat(3);
mountain(4);
flat(6);
mountain(1);
return result;
};

console.log(landscape());

当我试图分解这个函数时,我几乎理解了除了 for 循环之外的所有内容。我不确定为什么这个函数需要它们,并且想知道是否有人愿意为我消化这个问题,并解释为什么我们需要循环来使函数正常工作。

最佳答案

现在您将获得输出:

___/''''\______/'\

如果没有它们,您将得到两个如下所示的函数(简化版):

var flat = function(size){
result += "_";
};

var mountain = function(size){
result += "/'\\";
};

因此你会得到输出

_/'\_/'\

flat()size 参数定义应输出多少个下划线,mountainsize 参数定义应输出多少个下划线code> 定义应输出多少个单引号 (')。

因此你需要循环,否则你会得到更小的山脉和平坦的地方。

考虑下面的“绘图”,其中 F 为“平坦”,M 为“山”:

___/''''\______/'\
FFFMMMMMMFFFFFFMMM

每座山的长度始终至少为 3 个字符(因为它输出一个正斜杠,至少一个 ',然后是一个反斜杠)。这意味着上面的输出是(以及您的代码)

3 x F = 3 flats               | flats(3)
6 x M = (6 - 2) = 4 mountains | mountain(4)
6 x F = 6 flats | flats(6)
3 x M = (3 - 2) = 1 mountain | mountain(1)

重申一下:

// define an anonymous function with a "size" parameter and save it as "flat"
var flat = function (size) {
// start "count" at 0 (count = 0) and add 1 to "count" (count++) while "count" is less than "size" (count < size)
for (var count = 0; count < size; count++) {
// Add an underscore to the "result" variable
result += "_";
}
};

// define an anonymous function with a "size" parameter and save it as "mountain"
var mountain = function (size) {
// Add a forward slash to the "result" variable
result += "/";

// start "count" at 0 (count = 0) and add 1 to "count" (count++) while "count" is less than "size" (count < size)
for (var count = 0; count < size; count++) {
// Add a single quote to the "result" variable
result += "'";
}

// Add a backwards slash to the "result" variable
result += "\\"
};

如果你问是因为

if (foo)
bar();
oof();

对你来说似乎很奇怪,那么总是考虑像这样的单行条件类似于

if (foo) {
bar();
}
oof();

关于javascript - 有人可以向我解释一下为什么我们需要在这个函数中使用 for 循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28518841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com