[英]Understanding the return statement.
我看了很多例子,但仍然无法弄清楚return语句是如何工作的。
function One() {
var newVal = 0;
Too();
console.log(newVal);
}
function Too(newVal) {
++newVal;
return(newVal);
}
此打印不应该在控制台上打印1吗? 我真正想做的是让函数TooVal每次调用都增加1。 但是我什至无法弄清楚如何使return语句起作用。 我应该提到我不想使用全局变量。 谢谢你的帮助。
此打印不应该在控制台上打印1吗?
号的newVal
里面Too
不是newVal
里面One
。 他们是完全分开的。
我真正想做的是让函数TooVal每次调用都增加1。
不能,JavaScript没有像其他语言一样通过引用传递变量的任何机制(例如C#的ref
和out
参数)。 最接近的方法是传递对对象的引用并修改对象的状态(这实际上是完全不同的,在这里我不会赘述,因为它会使事情变得混乱:-))。
这些都与return
语句无关。
做您所描述的最简单的方法是:
function One() {
var newVal = 0;
newVal = Too(newVal);
console.log(newVal);
}
function Too(arg) {
++arg;
return arg;
}
当我们调用One
时,会发生以下情况:
newVal
的局部变量。 0
。 Too
中。 没有链接返回到newVal
变量。 Too
并在其arg
参数中接受该值(JavaScript中的参数实际上是局部变量)。 arg
的值也增加Too
。 Too
返回arg
保留的值的副本作为其返回值 。 Too
的返回值分配给变量newVal
。 console.log
)。 不,不应该。 return
语句确定当控制返回到调用环境时,函数调用的值在调用环境中将是什么。 由于您的调用环境不使用返回值,因此没有净效果。
这是您获取价值的方法:
newVal = Too(newVal);
如果要创建一个用作计数器的函数,这样每次调用它时都会得到一个新的数字,您可以执行以下操作:
var counter = function(initial) {
var c = initial || 0;
return function() {
return c++;
};
}(0);
这样做是使用匿名函数为另一个函数设置一个持久环境,该环境在(立即)被调用时从外部函数返回。 然后可以调用返回的函数,以从其专用计数器(变量“ c”)返回新值:
var currentCount = counter();
alert(currentCount); // 0, the first time
currentCount = counter();
alert(currentCount); // 1, and so on
如果函数返回一个值,则需要在console.log
调用该函数或捕获返回的值。
function One() {
var newVal = 0;
console.log(Too(newVal));
}
function Too(newVal) {
++newVal;
return(newVal);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.