Javascript 需要帮助了解函数返回值的位置吗

Javascript 需要帮助了解函数返回值的位置吗,javascript,function,return-value,Javascript,Function,Return Value,我想我有一个很大的逻辑问题。另一个函数无法识别函数返回值。我不太确定DoStuff返回的值去了哪里…为什么我不能访问Numaray值 我的理解是,函数中的所有值都是该函数的本地值……除非我使用return,它应该允许我访问该值 因此,这段代码只是在一个外部js文件中…您看到的是其中唯一的东西。我的大问题是,当我返回努马拉时……那个值会去哪里 函数doStuff(){ //编写(“我们现在正在测试文档编写!”); 让努马拉; 让我们看看数组; let start=parseInt(提示(“输入一

我想我有一个很大的逻辑问题。另一个函数无法识别函数返回值。我不太确定DoStuff返回的值去了哪里…为什么我不能访问Numaray值

我的理解是,函数中的所有值都是该函数的本地值……除非我使用return,它应该允许我访问该值

因此,这段代码只是在一个外部js文件中…您看到的是其中唯一的东西。我的大问题是,当我返回努马拉时……那个值会去哪里

函数doStuff(){
//编写(“我们现在正在测试文档编写!”);
让努马拉;
让我们看看数组;
let start=parseInt(提示(“输入一个小数字”);
让end=parseInt(提示(“输入一个更大的数字”);
如果(开始>结束){
警报(“错误:第一个整数大于最后一个!”)
}否则{
让arraySize=结束-开始;
numArray=[开始];

对于包含这些onclick函数的主js文件中的(x=start+1;x),在调用doStuff函数后,需要有一个全局变量来存储numaray

大概是这样的:

let globalNumArray

// on click button doStuff
function (){
    globalNumArray = doStuff()
}

// on click button addArray
function() {
    addArray(globalNumArray)
}
我的大问题是,当我返回努马拉时……那个值会去哪里

返回值将转到调用该特定函数的位置。

编辑: js中不鼓励使用全局变量的原因是,因为所有代码都有一个全局名称空间,javascript在其中自动隐含了全局变量(如未在局部范围中显式声明的变量会自动添加到全局名称空间)。过多地依赖全局变量会导致同一页面上的脚本之间发生冲突。这并不意味着您不能使用全局变量,但不应轻率地使用它们。如果您需要在函数完成后可以访问某个变量,则您的选择是有限的,因此请使用一个全局变量,或将该变量传递给所需的函数

您只需保存doStuff的结果,然后在addArray中访问该变量:

var结果
函数doStuff(){
//编写(“我们现在正在测试文档编写!”);
让努马拉;
让我们看看数组;
let start=parseInt(提示(“输入一个小数字”);
让end=parseInt(提示(“输入一个更大的数字”);
如果(开始>结束){
警报(“错误:第一个整数大于最后一个!”)
}否则{
让arraySize=结束-开始;
numArray=[开始];
对于(设x=start+1;x
函数中的所有值都是该函数的局部值…除非我使用
返回

嗯,这是…部分正确。第一部分是正确的,没有“除非”。
return
语句只是指向函数返回的值。这并不意味着这个变量现在是全局变量。
return
中的值是一种“函数值”如果您以后想使用它,您必须将其存储在变量中,正如您在其他人的回答中所看到的。

doStuff()正在返回一个值,因此请将此函数的返回用作变量。我们可以将此返回值分配给另一个变量,也可以直接在表达式中使用。因此,请调用doStuff()以获取返回值

函数doStuff(){
//编写(“我们现在正在测试文档编写!”);
让努马拉;
让我们看看数组;
let start=parseInt(提示(“输入一个小数字”);
让end=parseInt(提示(“输入一个更大的数字”);
如果(开始>结束){
警报(“错误:第一个整数大于最后一个!”)
}否则{
让arraySize=结束-开始;
numArray=[开始];

对于(让x=start+1;x从DoStuff函数调用addArray函数,并将numArray作为参数传递给它)

function DoStuff() {

let numArray;
let sumArray;
let start = 1;
let end = 5;

if (start > end){
    alert("Error: first int greater than last!")
}
else {
    let arraySize = end - start;
    numArray = [start];
    for (let x = start + 1; x <= end; ++x){
        numArray.push(x);
    }    
}
addArray(numArray)
}

function addArray(numArray){
        console.log(numArray); 
}
函数DoStuff(){
让努马拉;
让我们看看数组;
让start=1;
设end=5;
如果(开始>结束){
警报(“错误:第一个整数大于最后一个!”)
}
否则{
让arraySize=结束-开始;
numArray=[开始];

对于(让x=start+1;x我认为以下几点可以帮助您:

1) 拆分代码。doStuff会提示用户输入,但它也会生成一个数组,其中包含从最小值到最大值的值。您应该有一个单独的函数,从最小值到最大值生成一个数组。拆分该函数将更容易识别问题

2) 一些解决方案建议使用全局变量,这可能是危险的 您必须将共享状态的范围限制为仅访问该状态所需的内容

3) 确保接口一致。不应在一个实例中返回值,而在另一个实例中不返回任何值。如果出现错误,请确保与通知调用方的方式一致

函数构建数组(开始、结束){
设arr=[];
如果(开始>结束){
//有很多方法可以解决这个问题
//但是您需要一个一致的接口来让
//调用方没有开始<结束
扔{
消息:“开始不能大于结束”,
};
}

对于(设x=start;x在何处调用
addArray
?正在打印
undefined
?是否使用过
DoStuff
的返回?设numaray是函数中的嵌套局部变量。如果调用DoStuff并返回numaray,则必须将该变量保存在某处。请在调用的位置添加代码。)addArray和doStuff:)刚刚修复了…当函数从未被调用时,首先。并且
doStuff
不会显式返回任何内容如果
start>last
@Martin调用它们,“两个函数都是通过onclick按钮”调用的…我可以做到这一点。我只是失去了不让它发生的能力。这样做会迫使它发生,而最初的想法是,只有当我按下网页上的按钮时,它才会发生。我有一个解决方案,可以分别调用这两个函数。即使你不接受我的答案,也要给出一个答案