在这段代码中,我目前将addToOutput变量的值捕获在if else语句中,其方式是我无法将该变量的值传递到语句之外。我希望得到这个值,以便当用户输入一个数字(例如930)时,该函数将输出900 + 30 + 0。为了编译结果,我有变量"输出"但如果它无法从addToOutput获取值,我将无法获得所需的结果如何才能使其成为addToOutput的值将在范围内?
function expandedForm(num) {
let stringOfNumber = num.toString();
let numberArray = Array.from(stringOfNumber);
let zero = "0";
let output;
let addToOutput;
for (let i=0; i<numberArray.length; i){
let firstNumber = numberArray.shift();
let arraySize = numberArray.length;
ifElse(arraySize, firstNumber,zero)
output = output + addToOutput;
}
}
function ifElse (arraySize, firstNumber, zero, addToOutput){
if(arraySize > 0){
let numberOfZeros = zero.repeat(arraySize);
addToOutput=firstNumber+ numberOfZeros + " + ";
return(addToOutput);
}
else{
addToOutput = firstNumber;
return(addToOutput);
}
}
expandedForm(930);
答案 0 :(得分:1)
从addToOutput
中删除ifElse
参数,只需return
您想要返回的值(请参阅***
行):
function ifElse (arraySize, firstNumber, zero){ // ***
if(arraySize > 0){
let numberOfZeros = zero.repeat(arraySize);
return firstNumber+ numberOfZeros + " + "; // ***
}
else{
return firstNumber; // ***
return(addToOutput);
}
}
然后在调用它时,使用该返回值:
addToOutput = ifElse(arraySize, firstNumber, zero);
这是一个编程基础(在JavaScript和许多其他语言中):您将数据传递给函数,该函数对数据进行操作,并返回结果。除此之外还有更多,但这是基本的事情。
答案 1 :(得分:0)
如第一个答案所述,返回值是一种非常好的方法。但是,我认为值得通过引用和值添加一些有关参数的信息。
通常被称为&#34;原始&#34;类型(字符串,数字,布尔值等)按值传递,这意味着当您离开函数时,值的更改将丢失。但是对象是通过引用传递的,这意味着在函数返回后仍然会有更改。所以在上面的例子中,所有这些都是按值传递的。但想象一下你这样做了:
var o = {arraySize, firstNumber,zero, addToOutput};
console.log(o.addToOutput);
ifElse(o);
console.log(o.addToOutput); // value may be different now!
function ifElse (o) {
if(o.arraySize > 0){
let numberOfZeros = zero.repeat(o.arraySize);
o.addToOutput=o.firstNumber+ numberOfZeros + " + ";
}
else{
o.addToOutput = o.firstNumber;
}
}
现在您传递的对象o
包含您的四个参数。这是通过引用传递的,因此更改将持续存在。
同样,这只是返回值的另一个选项。如果您需要多个返回值,它可能是一个有用的工具。