Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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]_Javascript_Function_Return - Fatal编程技术网

子函数中没有返回语句?[Javascript]

子函数中没有返回语句?[Javascript],javascript,function,return,Javascript,Function,Return,我在第三章-的功能 以下代码的所有内容对我来说都是有意义的——除了一件事 为什么子函数(缺少更好的术语)没有返回语句 var landscape = function() { var result = ""; var flat = function(size) { for (var count = 0; count < size; count++) result += "_"; }; var mountain = function(size) { res

我在第三章-的功能

以下代码的所有内容对我来说都是有意义的——除了一件事

为什么子函数(缺少更好的术语)没有返回语句

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);
  flat(1);
  return result;
};

console.log(landscape());
// → ___/''''\______/'\_
var横向=函数(){
var结果=”;
var扁平=功能(大小){
对于(变量计数=0;计数<大小;计数++)
结果+=”;
};
var=功能(大小){
结果+=“/”;
对于(变量计数=0;计数<大小;计数++)
结果+=“'”;
结果+=“\\”;
};
单位(3);;
山区(4);
公寓(6);
山区(1);
单位(1);;
返回结果;
};
log(横向());
// → ___/''''\______/'\_
也许我遗漏了关于return语句目的的一些基本信息,即使在阅读了来自不同来源的不同定义之后

我尝试过向子函数添加return语句。我发现它要么提前终止子函数,要么产生相同的结果,就好像它从未存在过一样


感谢阅读。

他们正在访问外部作用域变量
结果
,并在那里更改某些内容。因此,它们更改实际的
结果
变量的值,并且不需要返回任何内容。如果到达函数末尾,则函数结束。您也可以通过创建局部函数范围的变量并从中生成字符串,返回它们并在主
横向
函数中连接来实现这一点

请参阅代码的备选方案和返回语句

var横向=函数(){
var结果=”;
var扁平=功能(大小){
var localFlat='';//函数作用域变量
对于(变量计数=0;计数<大小;计数++){
localFlat+=“25;”;
}
return localFlat;//返回函数作用域变量
};
var=功能(大小){
var localMountain=“/”;//函数作用域变量
对于(变量计数=0;计数<大小;计数++){
localMountain+=“'”;
}
localMountain+=“\\”;
return localMountain;//返回函数作用域变量
};
结果=平坦(3)+山(4)+平坦(6)+山(1)+平坦(1);//连接每个函数的结果
返回结果;
};

log(横向())因为子函数会影响全局横向变量-结果,最后函数返回结果变量。。此示例显示您可以将全局变量更改为子函数。

子函数也没有单独的结果(它们只操作
结果
变量)。您希望它们返回什么值,以及如何在调用位置使用这些值?函数不需要
return
语句。如果执行到达主体的末尾,它只会结束函数(并返回
未定义的
)。@Bergi嗯,即使阅读了一些定义并查看了一些示例,我也不清楚“
返回
值”到底意味着什么。现在这一点越来越明显了。直到@suren srapyan给出答案和示例,我才接触到外部变量和函数范围变量的概念。但是,即使在Suren的帖子之后,我仍然没有完全理解它,直到我读了你的评论(“子函数也没有单独的结果(它们只是操纵
结果
变量)。然后,所有这些都结合在一起了。谢谢!