如何访问常量嵌套函数&x27;javascript中的s参数?
我在一次评估中被问到这个问题,但我无法理解。我想知道可能的解决办法 问题: 在指定的行上写一条Javascript语句,使打印的数字始终介于10和20之间如何访问常量嵌套函数&x27;javascript中的s参数?,javascript,algorithm,Javascript,Algorithm,我在一次评估中被问到这个问题,但我无法理解。我想知道可能的解决办法 问题: 在指定的行上写一条Javascript语句,使打印的数字始终介于10和20之间 let x = 2; let y = 8; const a = function(b) { return function(c) { return x + y + Math.abs(b) + c; }; }; // Statement will go here const fn = a(x); x
let x = 2;
let y = 8;
const a = function(b) {
return function(c) {
return x + y + Math.abs(b) + c;
};
};
// Statement will go here
const fn = a(x);
x = 4;
console.log(fn(Math.random() * 10));
我尝试过为变量
y
分配不同的值。但我认为罪魁祸首是知道嵌套函数中的变量c
。请注意,c
始终是一个介于0和10之间的数字(正如Math.random()
在0和1之间,然后乘以10)。您已经正确地得出结论,传递给fn
的参数是一个介于0和10之间的随机数,在调用fn
将计算的表达式中,它是c
:x+y+Math.abs(b)+c
因此,如果fn
必须返回10到20之间的数字,那么x+y+Math.abs(b)
必须等于10
我们还看到全局变量x
在我们不能再更改它的时候被设置为4,但仍然在调用fn
之前,因此这意味着y+Math。abs(b)
必须等于6
现在这已经给了我们一个提示:y
是8,这使得上一段中的结论不可能。所以我们必须改变y
。现在还不算太晚,因为只有在调用fn
时才会读取y
的值
那么什么是Math.abs(b)
?调用a
时设置局部变量b
a
通过x
调用,在调用时仍然是2。所以Math.abs(b)
是2,所以我们可以推导出y
必须是4
使y
成为一行中的4的一种明显方法:
y = 4;
(或者,
y-=4
,y>=1
,y/=2
,y^=12
,…等等)如果您想提供创造性的答案,请尝试:
Math.random = function() { return 1.345; };
你的角色是什么?问题是什么?你到底想在这里做什么?问题是什么?“如何访问”不是一个明确的问题。任务是什么?你有没有想过重新分配
Math.random
..)抱歉,该问题没有生成代码块,因为它是一条注释语句。我刚刚添加了:在指定的行上写一条Javascript语句,使打印的数字始终在10到20之间。