Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有人能给我解释一下为什么在这个函数中需要for循环吗?_Javascript_Loops - Fatal编程技术网

Javascript 有人能给我解释一下为什么在这个函数中需要for循环吗?

Javascript 有人能给我解释一下为什么在这个函数中需要for循环吗?,javascript,loops,Javascript,Loops,我对编程比较陌生,今天正在读《雄辩的Javascript》。我遇到了一个与总体范围相关的示例。然而,我更感兴趣的是理解它们提供的功能中的所有元素 以下是函数: var landscape = function () { var result = ""; var flat = function (size) { for (var count = 0; count < size; count++) result += "_"; }

我对编程比较陌生,今天正在读《雄辩的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());
var横向=函数(){
var结果=”;
var扁平=功能(大小){
对于(变量计数=0;计数<大小;计数++)
结果+=”;
};
var=功能(大小){
结果+=“/”;
对于(变量计数=0;计数<大小;计数++)
结果+=“'”
结果+=“\\”
};
单位(3);;
山区(4);
公寓(6);
山区(1);
返回结果;
};
log(横向());

当我试图分解这个函数时,除了for循环外,我基本上了解了所有内容。我不知道为什么这个函数需要它们,我想知道是否有人愿意为我解决这个问题,并解释为什么我们需要循环来使函数正常工作

现在您将获得输出:

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

因此,您将获得输出

_/'\_/'\
flat()
size
参数定义了应该输出多少个下划线,而
mountain
size
参数定义了应该输出多少个单引号(

因此,你需要环路,否则你会得到更小的山脉和平原

考虑以下“图纸”,其中
F
为“平面”,
M
为“山”:

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

重申:

// 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();

现在您将获得输出:

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

因此,您将获得输出

_/'\_/'\
flat()
size
参数定义了应该输出多少个下划线,而
mountain
size
参数定义了应该输出多少个单引号(

因此,你需要环路,否则你会得到更小的山脉和平原

考虑以下“图纸”,其中
F
为“平面”,
M
为“山”:

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

重申:

// 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();

正如在另一个答案中所说,for循环用于将字符连接指定的次数。我想指出的是,你不需要for循环来制作你的“平面”和“山脉”


正如在另一个答案中所说,for循环用于将字符连接指定的次数。我想指出的是,你不需要for循环来制作你的“平面”和“山脉”


阅读这本书可能会有帮助吗?和一些一般性的东西。取出循环应该会给你一个我们需要它的提示。我假设这个例子使用
\uu
/
等创建一个图片。尝试不使用for循环的代码。For循环用于事物的迭代。在这种情况下,需要存储所有这些字符,以便在某种意义上进行叠加并创建一幅图片。Def试验使用和不使用for循环!你应该看到明显的不同!您也可以在控制台中直接在chrome中运行。按ctrl+shift+J组合键阅读可能会有所帮助?和一些一般性的东西。取出循环应该会给你一个我们需要它的提示。我假设这个例子使用
\uu
/
等创建一个图片。尝试不使用for循环的代码。For循环用于事物的迭代。在这种情况下,需要存储所有这些字符,以便在某种意义上进行叠加并创建一幅图片。Def试验使用和不使用for循环!你应该看到明显的不同!您也可以在控制台中直接在chrome中运行。ctrl+shift+J非常感谢您!这个解释很有帮助!非常感谢你!这个解释很有帮助!
var landscape = function () {
    var result = "";

    var flat = function (size) {
         result += Array(size+1).join("_");
    };
    var mountain = function (size) {
        result += "/";
        result += Array(size+1).join("'");
        result += "\\";
    };

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

console.log(landscape());