0

这是一个代码片段任务 - 您应该在其中输入“var”(任意数量),以便在第一个警报中获得 17,在第二个警报中获得 21。我之前遇到过这个问题,但仍然无法解决问题。

a = 3;
b = 2;

function line(x) {
    a = 5;
    b = 4;
    return a*x + b
}

//b should be 17
b = line( a ) - b;
alert( b );

//c should be 21
c = line ( a ) + b;
alert(c);

如果你把“var”放在b前面的函数中,它会提示“17”。由于 b 的新值,下一个警报给我们 46,由函数返回。

function line(x) {
     a = 5;
    var b = 4;
    return a*x + b
}

这就是任务的来源:

http://www.codecademy.com/courses/javascript-for-jquery/1?curriculum_id=4fc3018f74258b0003001f0f/#!/exercises/3

4

2 回答 2

1

完全使用给定的东西,完全按照给定的方式使用是不可能的。

我的意思是如果调用:

c = line(a) + b;

取决于 b 的值,它是在:

b = line(a) - b;

然后 100% 不可能要么做出a一个非常小的数字,要么做出b一个非常大的负数来使数学工作。

因此,我相信它们旨在成为两个单独的检查。

最好的情况,如果我们试图b=17包括:

a = 3;
3 * 5 = 15 + 4 = 19 + 4 = 23;

假设您将两个背靠背运行,这是您将获得的最小的。即使你这样做了,你也不会b = line(a) - b = 17在第一次运行......

如果是这样写的:

c = line(a) - b;
d = line(a) + b;

然后你可以连续运行两者并获得预期的结果。

或者你可以运行:

var a = 3,
    b = 2;

function line (x) {
    var a = 5,
        b = 4;
    return a*x + b;
}

b = line(a) - b;

得到17。

然后你可以运行:

var a = 3,
    b = 2;

function line (x) {
    var a = 5,
        b = 4;
    return a*x + b;
}

c = line(a) + b;

(即:完全相同的设置与不同的发起者,并且没有b从先前调用的返回中保存的值),并获得所需的结果。

但是不可能一个接一个地运行它们,并期望它们都工作,而不对代码做任何事情,只添加一个var或四个。

于 2012-08-03T07:14:41.520 回答
0

如果您想保持一致性,请保持这样的功能。在 a 和 b 之前使用“var”将使它们成为功能块和该调用的本地。否则它们将引用全局变量。

function line(x) {
    var a = 5;
    var b = 4;
    return a*x + b
}
于 2012-08-03T06:49:05.113 回答