这是一个代码片段任务 - 您应该在其中输入“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);
如果在b前面的函数中加上“var”,它将发出“17”警告。下一个警报给我们46因为b的新值,由函数返回。
function line(x) {
a = 5;
var b = 4;
return a*x + b
}
这是任务的来源:
答案 0 :(得分: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
或者四个。 / p>
答案 1 :(得分:0)
如果你想保持一致,请保持这样的功能。在a和b之前使用“var”将使它们成为功能块和该调用的本地。否则他们将引用全局变量。
function line(x) {
var a = 5;
var b = 4;
return a*x + b
}