当有多个参数时,我无法理解如何从第二个函数返回信息。现在我知道以下代码可以正常工作。
function One() {
var newVal = 0;
newVal = Too(newVal);
console.log(newVal);
}
function Too(arg) {
++arg;
return arg;
}
但是,如果我尝试通过添加参数和setinterval来复杂化,那该怎么办呢。
function One() {
var newVal = 0;
var z = 3;
var y = 3;
var x = 1;
newVal = Too(newVal);
var StopAI2 = setInterval(function () {
Too(x, y, z, newVal)
}, 100);
}
function Too(Xarg, Yarg, Zarg, newValarg) {
Xarg*Xarg;
Yarg*Yarg;
Zarg*Zarg;
++newValarg;
return newValarg;
}
我不知道如何处理newVal =代码行。我只想返回newVal而不是x,y,z。
答案 0 :(得分:3)
这是我认为你想问的问题:
当只传递一个参数时,如何对函数的第四个参数进行操作?
这个问题的答案是:
如果要对函数的第4个参数进行操作,则必须至少将4个参数传递给函数。
有几种方法可以区别对待您的问题。
如果有一个参数总是必要的,请确保它是第一个参数:
function Too(mandatoryArg, optionalArg1, optionalArg2) {
alert(++mandatoryArg);
if (optionalArg1) {
alert(++optionalArg1);
}
}
传递所有未定义或未知参数的占位符值。
您可以使用null
,undefined
或''
。
alert(Too(null, null, 4));
function Too(optArg1, optArg2, mandatoryArg) {
alert(++mandatoryArg);
}
根据参数的数量做出决定:
function Too(optArg1, optArg2, optArg3) {
var numArgs = arguments.length;
if (numArgs === 1) {
alert(++optArg1);
}
if (numArgs === 3) {
alert(++optArg3);
}
}
修改强>
“这会在第一个函数中更新变量吗?”
让我们使用一个演示某些内容的实际示例:
function one() {
var a = 0;
var b = 25;
var c = 50;
var d = -1;
d = two(a, b, c);
alert("a: " + a);
alert("b: " + b);
alert("c: " + c);
alert("d: " + d);
}
function two(a, b, c) {
++a;
++b;
++c;
if (arguments.length === 1) {
return a;
}
if (arguments.length === 3) {
return c;
}
}
调用one()
会导致以下警告:
a: 0
b: 25
c: 50
d: 51
仅在函数 one()中修改了d
的值。
那是因为d
被分配了 two()的返回值。
two()内的a
,b
和c
的更改对a
的值没有影响,{ {1}}以及 one()中的b
。
即使 two()的参数名为c
,a
和b
,也会出现这种情况。
以下是带有上述代码的fiddle。
编辑#2
这是一种可以创建移动游戏对象的函数的方法:
c
这是一个fiddle,显示了另一种方法的工作演示。
答案 1 :(得分:2)
这里有两个概念。
1。可变数量的函数参数(或可选参数)。
如果要使用不同数量的参数调用相同的函数(这最终会导致令人头痛的事情),您需要确定(在函数内部)如何调用此函数。您可以在每个函数中使用arguments
对象:
function Too() {
if (arguments.length == 4) {
arguments[0]*arguments[0];
arguments[1]*arguments[1];
arguments[2]*arguments[2];
return ++arguments[3];
} else if (arguments.length == 1) {
return ++arguments[0];
} else {
// you decide what to do here
}
}
2。异步代码执行。
实现间隔到期时调用的Too
,在One
完成并返回后执行良好。如果您希望Too
影响newVal
变量,并在某种程度上获得此新值,请将newVal
变量设为全局变量。