子函数中没有返回语句?[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的帖子之后,我仍然没有完全理解它,直到我读了你的评论(“子函数也没有单独的结果(它们只是操纵结果
变量)。然后,所有这些都结合在一起了。谢谢!